2014-05-14 46 views
0

我正在撰寫cordova + angular + breeze應用程序,其中來自元素的文本信息應該存儲在封裝應用程序的瀏覽器的現金中。 Accordind to the docs要這樣做,首先我需要在微風中創建新的實體類型。我做到以下幾點:在微風中創建具有新實體類型的新實體

var entityManager = new breeze.EntityManager("api/Northwind"); 
var newType = new breeze.EntityType({ 
    shortName: "input" 
}); 

接下來,我試圖創建這種類型的新的實體:

var newEntity = newType.createEntity(); 

這種失敗的消息:「類型錯誤:無法讀取屬性‘_ctorRegistry’未定義」

似乎是微風的非常基本的功能,但我已經無法工作2天了。任何人都可以幫助我嗎?

+0

正如接受的答案指出,這裏至少有3個問題。 (1)新類型必須添加到一個'MetadataStore' ...幾乎肯定是屬於經理('manager.metadataStore')的類型和(2)新類型應該有一些屬性...至少一個關鍵屬性。現在微風會認爲你可以堅持這個服務器,所以你更好地防範。我發現自己想知道「爲什麼Qvatra創建了一個不能被持久化的假裝實體?」。你可能有一個很好的理由,但它似乎是一個可疑的舉動。 – Ward

回答

1

創建新的EntityType後,您應該將其附加到metadataStore以創建新類型的實體。你的代碼應該看起來如下:

var metadataStore = new breeze.MetadataStore(); 
entityManager= new breeze.EntityManager({ 
      serviceName: "api/db", 
      metadataStore: metadataStore 
     }); 

// if you call fetchMetadata() 
entityManager.fetchMetadata().then(function(){ 
    var newType = new breeze.EntityType({ 
     shortName: "input" 
    }); 

    entityManager.metadataStore.addEntityType(newType); 

    newType.createEntity(...); 
    // ... 
}); 

//or just use var metadataStore 
var newType = new breeze.EntityType({ 
    shortName: "input" 
}); 

entityManager.metadataStore.addEntityType(newType); 

newType.createEntity(...); 
// ... 
相關問題