2013-10-29 62 views
8

我最近更新了所有我的nuget軟件包到最新的EF6,微風1.4.5,system.web.http.odata 5.0.0.0,和所有其他好位可用。MaxExpansionDepth與最新的webapi和微風

現在,包含像X.Y.Z擴展一個查詢我得到一個錯誤如下:

A first chance exception of type 'Microsoft.Data.OData.ODataException' occurred in System.Web.Http.OData.dll 

Additional information: The request includes a $expand path which is too deep. The maximum depth allowed is 2. To increase the limit, set the 'MaxExpansionDepth' property on QueryableAttribute or ODataValidationSettings. 

我看着建議的修復。如果我在查詢的微風'端點'上添加一個Queryable屬性,它似乎會導致各種其他問題。我的猜測是干擾微風的預期行爲,並以不同的方式對結果進行格式化。

我再擡頭到使用HttpConfiguration EnableQuerySupport擴展方法,通過GlobalConfiguration.Configuration ...,但似乎沒有任何效果(見Supporting OData Query Options

沒有任何人有任何想法如何我可以更改默認webapi行爲?

謝謝。

回答

20

你需要一個BreezeQueryable屬性添加到您的微風控制器這樣的IQueryable方法...

[BreezeQueryable(MaxExpansionDepth = 3)] 
    public IQueryable<Customer> Customers() 
    { 
     ... 
    } 
+0

完美!謝謝。不知道爲什麼它現在纔開始抱怨?必須是最新webapi版本中的更改。 – Adam

+2

您也可以將其應用於控制器級別:http://stackoverflow.com/questions/21635376/how-to-apply-maxexpansiondepth-globally-or-to-an-entire-controller-in-breeze – lnu

+0

對於我們來說,我們需要使用BreezeNHQueryable –