查看[BreezeController]
Web API 的属性。您将在那里看到它如何组成一个包含客户端查询参数的 LINQ 表达式。
但是,我怀疑出于您的目的,将客户端查询信息以解析的形式保存会更有用,这样您就可以设置适当的服务器端数据观察程序并使用它来过滤客户端感兴趣的更改。Web API 在可选参数中为您提供此信息,ODataQueryOptions<T> options
其中T
的类型与IQueryable<T>
.
从理论上讲,您可以将查询发送到“资源”,该“资源”实际上只是一种注册感兴趣更改的方法
例如,假设您查询热销产品
var hotStuff = blink.EntityQuery.from('Products').where('IsHot', 'eq', 'true');
manager.executeQuery(hotStuff).then(成功,失败);
您通过定位不同的资源稍微修改该查询
var hotStuffWatcher = blink.EntityQuery.from('ProductsWatch').where('IsHot', 'eq', 'true');
manager.executeQuery(hotStuffWatcher); // 你不在乎它返回什么或是否返回
在 Web API 方面,该方法是
[HttpGet]
[BreezeQueryable] // 必须告诉微风将此方法视为返回 IQueryable<T>
公共 RegistrationToken ProductsWatch(ODataQueryOptions<Product> 选项)
{
var registrationToken = Watch<产品>(选项);
返回注册令牌;// 当客户端想要取消监视时可能有用
}
请理解,我主要是推测为您提供研究的途径。