breeze的withParameters方法是否与OData服务适配器一起工作?

breeze的withParameters方法是否与OData服务适配器一起工作?,breeze,Breeze,我使用OData和实体框架从数据库中选择一些记录。每个记录都有一个指向包含文本内容的文件的路径。在单个服务调用中,我希望能够过滤DB记录,并根据记录指向的文件内容过滤结果对象。因为我不能将LINQ to EF与LINQ to对象混合使用,所以我认为实现这一点的最简单方法是在标准OData参数中添加一个额外的查询参数,该参数定义了在应用标准OData过滤器后如何过滤文件内容 看起来实体查询的withParameters方法是添加非标准参数的方法,但它似乎不适用于breeze的1.4.9版 我是否做

我使用OData和实体框架从数据库中选择一些记录。每个记录都有一个指向包含文本内容的文件的路径。在单个服务调用中,我希望能够过滤DB记录,并根据记录指向的文件内容过滤结果对象。因为我不能将LINQ to EF与LINQ to对象混合使用,所以我认为实现这一点的最简单方法是在标准OData参数中添加一个额外的查询参数,该参数定义了在应用标准OData过滤器后如何过滤文件内容

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


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

否,您需要使用WebApi适配器。这不是微风的缺点,而是OData的缺点,因为OData不支持这种语法


但是,WebApi适配器可以执行您想要的所有操作,这是Breeze的默认设置。有关更多信息,请参阅文档

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

var entityId = 4;
var answerId = 6;
var entityToQuery = "MyEntity(EntityId=" + entityId + ",answerId=" + answerId + ")";
然后,构建您的breeze查询:

var query = breeze.EntityQuery.from(entityToQuery);
这将映射到OData端点,例如:

公共IQueryable GetMyEntity[FromODataUri]int-entityId[FromODataUri]int-answerId {
}

答案表明可能正在添加该功能。现在不是这样了吗?如果是这样的话,有没有办法让breeze构造一个字符串的odata查询,这样我就可以用它来构造一个常规的web api调用?这就是breeze的开箱即用功能。它使用OData语法与WebApi对话,并添加其他参数以支持withParameters调用。谢谢!我相信我现在明白了。实际上这是一个微风的缺点,您应该能够在与OData端点交谈时使用。with参数,它将得到解决。如果您可以通过Web API而不是Web API OData实现您的目标,请务必这样做。OData v2支持自定义参数:从ODatauri哪里获得?我在说无效参数时出错:-