Breeze的withParameters方法是否适用于OData服务适配器?



我正在使用带有实体框架的 OData 从数据库中选择一些记录。每个记录都有一个指向包含文本内容的文件的路径。在单个服务调用中,我希望能够过滤数据库记录,并根据记录指向的文件内容过滤生成的对象。由于我无法将 LINQ to EF 与 LINQ to Object 混合使用,因此我认为实现此目的的最简单方法是向标准 OData 参数添加一个额外的查询参数,该参数定义在应用标准 odata 筛选器后如何筛选文件内容。

看起来实体查询的"withParameters"方法是添加非标准参数的方法,但它似乎不适用于 breeze 的 1.4.9 版。

我是否做错了什么,或者是否打算使此方法适用于 OData 服务提供商?

作为此缺点的解决方法,我发现您可以使用实体名称的一部分使用参数声明要查询的实体,如下所示:

var entityId = 4;
var answerId = 6;
var entityToQuery = "MyEntity(EntityId=" + entityId + ",answerId=" + answerId + ")";

然后,构建微风查询:

var query = breeze.EntityQuery.from(entityToQuery);

这将映射到 OData 终结点,例如:

public IQueryable<MyEntity> GetMyEntity([FromODataUri] int entityId, [FromODataUri] int answerId) { }

不,您需要使用 WebApi 适配器。 这不是一个轻而易举的缺点,而是一个 OData 缺点,因为 OData 不支持此语法。

但是,WebApi 适配器确实可以执行您想要的所有操作,这是 Breeze 默认值。有关详细信息,请参阅文档。

最新更新