2013-07-23 85 views
7

我們正在向我們在數據庫中未跟蹤的服務器上的對象添加其他屬性。數據返回給客戶端,但由breeze實現的對象沒有將其作爲屬性。我們怎樣才能將屬性添加到我們的對象中,而不是將它們映射到存儲數據的數據庫中?包含未映射到實體框架實體的服務器端屬性

示例:窗口小部件類 屬性A - 映射到數據庫 屬性B - 具有[NotMapped]屬性,以便它不存儲在數據庫中。它由服務器實時計算。

當我們得到我們得到的客戶機上的對象: Widget類= { 屬性答:ko.observable(價值A) }

屬性B丟失。

當我們看通過我們看到服務器返回的JSON:

Widget類= { 物業答:對於一個數值, 物業B:對於B 值}

回答

4

屬性與NotMapped屬性不是由EFContextProvider生成的元數據的一部分,因此這些特性將不會在客戶端實體微風可用。但是在js中,您可以擴展客戶端實體並自己將該屬性添加到entityType(使用初始值設置)。這將確保從服務器檢索json對象時,該屬性的值是否設置正確。

http://www.breezejs.com/documentation/extending-entities

+2

arul是正確的。這對我有效。閱讀微風團隊分享的文檔。在實體類型構造函數中,您必須使用與服務器實體中的名稱完全相同的名稱來聲明NotMapped屬性(如果它以大寫字母開頭,請按照相同的方式)。例如:Entity「TheEntity」有NotMapped稱爲「Not」的bool屬性。然後在javascript:metadataStore.registerEntityTypeCtor('TheEntity',function(){this.Not = ko.observable(false);});就是這樣,它將使用ctor中提供的值,除非它具有與服務器不同的值。 – kzfabi

+0

這太不方便了!我想有能力爲實體添加一些NotMapped可寫的服務器屬性! – blazkovicz

0

這聽起來像什麼沃德貝爾提到 - 也許屬性有一個空值,默認情況下微風不返回它。

檢出如上所述添加一個自定義微風配置類來調整空值在Json中返回的方式。只需將此類添加到Web Api項目中,意味着Breeze會自動查找並配置它。

http://www.breezejs.com/documentation/web-api-controller

+0

不是。它不是空值。你可以看到客戶端返回給服務器的json數據中的屬性。有沒有什麼方法可以訪問返回給客戶端的屬性,這些屬性不包含在實體類型定義中? – StewartArmbrecht