从v1.2升级到1.4后,BreezeJS不再扩展工作了?

时间:2014-03-29 03:17:40

标签: entity-framework breeze

好的,经过多次努力,我刚刚将我的项目从Breeze 1.2升级到1.4,EF 5.0升级到6.1并且它正在运行。但是,我注意到,一些查询不再适用。在客户端,我得到这样的错误:

  

GET   ... /微风/微风/方法$过滤= ID%20当量%201安培; $扩大= CompoundSettings%2FCompound%2FTargetPeaks   400(不良请求)

正如我所读到的,有些人报告说,微风并不支持多对多的关系。然而,我的并不是多对多的。

在我的例子中,Methods包含一个CompoundSetting集合,其中包含一个Compound,其中包含一个TargetPeak集合。我还尝试删除虚拟关键字以进行收集,但它似乎没有任何区别。

如果展开不包含最后一个TargetPeaks,则可以正常工作。

问题是什么?嵌套图层太多了?请注意,相同的查询(甚至更多图层)在Breeze v1.2中运行良好。

1 个答案:

答案 0 :(得分:2)

我认为您可能遇到this SO post中描述的问题。

旧版本的EF和WebApi不支持$ expand,因此Breeze EF服务器代码使用自己的实现进行$ expand。现在,使用WebApi 2,Breeze使用Microsoft的实现,它使用Microsoft的默认设置。

Queryable属性包含“MaxExpansionDepth”属性,以防止客户端进行过大的查询。我不确定默认值是什么,但请尝试:

[BreezeQueryable(MaxExpansionDepth = 4)]
public IQueryable<Method> Methods()
{
    ...
}