好的,经过多次努力,我刚刚将我的项目从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中运行良好。
答案 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()
{
...
}