2013-06-20 21 views
0

我只是想知道是否有任何方法可以輕鬆地修剪我的項目中Breeze控制器的元數據響應中的實體。簡單的就像JsonIgnore屬性一樣,可以添加到實體元數據中以排除特定的屬性(或至少與其相關的數據)。微風排除元數據web api中的特定實體控制器響應

我並不太在意它,但我喜歡我的代碼效率很高,並且我可以從面向客戶端的元數據存儲中刪除50%的實體,因爲我有足夠的實體專用於沒有位置的業務邏輯在客戶端應用程序中,我想大多數情況下我不希望將整個數據庫模式的地圖廣播到整個世界。

回答

2

現在,如果您要通過EFContextProvider,現在還沒有簡單的方法,因爲我們只是將Entity Framework CSDL轉換爲Json並將其發送到電線上。你可以做什麼,但是確實需要一些管道工作,在把它發送給客戶端之前,先修剪服務器上的「jsonized」CSDL,即類似的東西。

[HttpGet] 
public String Metadata() { 
    var metadata = ContextProvider.Metadata(); 
    // trim the metadata here 
    // metadata = trimMetadata(metadata); 
    return metadata; 
} 

如果你不打算直通EF還是願意「手」的代碼來構建的元數據,在服務器上,那麼這是不是一個問題,微風將接受CSDL元數據或我們稱之爲微風什麼本地元數據作爲元數據調用的有效返回。本地元數據格式如下所述:Breeze Metadata

在這種情況下,您可以創建元數據來描述您希望公開的模型的少量或多少。

Breeze提供了一些更自動化的修剪CSDL元數據機制的想法確實有很大意義。如果您認爲這會有所幫助,您可以將此作爲請求添加到Breeze User Voice。我們非常重視確定哪些功能需要關注。