2013-03-06 136 views

回答

0

「BreezeController」是一個簡單的.NET屬性有助於.NET的WebAPI提供經由OData的「語法」和以及JSON序列支持實體圖形和類型標識查詢過濾和排序支持。類型標識很重要,以便微風可以跟蹤其entityManager中的實體併合並查詢結果並更新關係屬性。 OData本身從不需要。

如果您不希望爲客戶端添加過濾和排序指令到服務器的能力,你可以寫自己的屬性,它只是提供了JSON序列化的支持。 json序列化僅僅包括配置web api已經使用的json.net格式器。

爲BreezeControllerAttribute源可以在Breeze.WebApi項目中找到真的很短。只需通過複製'BreezeControllerAttribute'並刪除IFilterProvider代碼來創建自己的'FooControllerAttribute'。另一方面,查詢和過濾支持不會傷害任何東西,除非你使用EntityQuery'where'orderBy''select'或'expand'方法,否則這個邏輯甚至不適用,除非你要明確地刪除這個能力也沒有必要不使用「breezeControllerAttribute」

+0

但似乎當談到沒有元數據微風客戶不承認JSON響應。在[TODO樣品]的響應(http://todo.breezejs.com/api/todos/Todos?$filter=IsArchived%20eq%20false&$orderby=CreatedAt)看屬性$類型。我的客戶正在談論的API沒有這個屬性$ type,我認爲這會導致我的Breeze客戶端返回Object而不是實例化一個已註冊的EntityType。 – 2013-03-06 18:15:06

+0

你是對的,現在我們需要通過配置json.net序列化程序提供的$ type屬性來識別類型並將數據合併到entityManager中,否則查詢結果將作爲普通對象返回。我們正在積極地開發一種方式,讓開發人員告訴客戶有關從查詢返回的類型或爲breeze客戶端提供推理規則的方式,以便它可以確定響應的類型,而不必由服務器明確提供。 – 2013-03-06 18:37:12

+0

這將是很好!計劃嗎? 或者在http://breezejs.uservoice.com建議更好? – 2013-03-06 18:46:55