2014-03-29 43 views
0

好吧,在經過很多努力之後,我剛把我的項目從Breeze 1.2升級到1.4,EF 5.0升級到6.1,並且它正在運行。但是,我注意到,一些查詢不再有效。在客戶端,我得到的錯誤是這樣的:從v1.2升級到1.4後,BreezeJS不能再擴展了嗎?

GET ... /微風/微風/方法$過濾= ID%20當量%,201 & $擴大= CompoundSettings%2FCompound%2FTargetPeaks 400(錯誤請求)

據我所知,有人報告說微風不支持多對多的關係。但是,我的並不是多對多的。

在我的情況下,Methods包含CompoundSetting的集合,其中包含一個Compound,其中包含一個TargetPeak的集合。我也嘗試刪除虛擬關鍵字收集,但它似乎沒有任何區別。

如果展開不包含最後一個TargetPeaks,它將起作用。

有什麼問題?嵌套圖層太多?請注意,相同的查詢(更多圖層)在Breeze v1.2中運行良好。

+0

我有相同的版本:Breeze:1.4和EF:6.1。你會發布客戶端代碼與擴展? –

+0

與此同時,我將這些擴展移動到服務器使用包含沒有任何問題的包含。我的項目再次運作。我用過的客戶端代碼如下所示:'var query = breeze.EntityQuery.from('Methods')。expand('CompoundSettings.Compound.TargetPeaks'); return manager.executeQuery(query).then(succeeded);' – newman

回答

2

我想你可能會遇到this SO post中描述的問題。

較早版本的EF和WebApi不支持$ expand,所以Breeze EF服務器代碼使用它自己的$ expand實現。現在,在WebApi 2中,Breeze使用微軟的實現,它使用微軟的默認設置。

Queryable屬性包含一個「MaxExpansionDepth」屬性,以防止客戶端能夠做出太大的查詢。我不確定默認設置是什麼,但請嘗試:

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

這是祕訣。而微風升級並沒有對你這樣做。 Web API 2升級了。 – Ward

+0

太好了。我只是測試了這個,它的工作原理。正如另一篇文章中提到的,您可以將此屬性添加到方法級別或控制器級別。對我來說太糟糕了,因爲與此同時,我將所有擴展轉換爲服務器端包含哪些運作良好。但很高興知道這個問題的解決方案,我相信我會在稍後需要它。太感謝了! – newman

相關問題