2013-03-05 146 views
2

to-do list sample正在使用BreezeController來提供API。 EFContextProvider用於提供Metadata字符串和方法,如SaveChanges()我必須使用BreezeController嗎?

問題:它直接與DbContext對話。我仍然希望能夠靈活地返回我自己的視圖模型,而不是那些領域模型。

在常規的ApiController中,我們可以輕鬆地返回自己的視圖模型。但是,如果我轉向定期ApiController,調用API時,breeze詢問Metadata,這是由

[HttpGet] 
public string Metadata() { 
    return _contextProvider.Metadata(); 
} 

如果我們使用BreezeController提供。

所以,我的問題是,我們必須使用BreezeController?我們如何使用它返回自定義視圖模型?或者,如果我們使用常規的ApiController以獲得更大的靈活性,我們如何提供Metadata

回答

3

「BreezeController」只是具有'BreezeController'屬性的任何API控制器。

「BreezeController」只是一個.NET屬性,它可以幫助.NET WebApi通過OData「語法」提供對查詢過濾和排序的支持,以及對實體圖和類型標識的json序列化支持。類型標識很重要,以便微風可以跟蹤其entityManager中的實體併合並查詢結果並更新關係屬性。

只有當您希望服務器提供有關查詢可以返回的類型的元數據時,才需要'元數據'方法。這個相同的元數據也可以提供給'客戶端',這樣你就不必實現這個方法。微風示例zip中的NoDb示例包含此示例。

有沒有微風的要求,你返回域模型,而不是視圖模型。要麼工作。您只需提供您使用的任何模型返回的類型的元數據。如果您想基於某些任意客戶端信息執行自定義服務器端邏輯,請查看EntityQuery'withParameters'方法。

相關問題