2012-12-21 14 views
1

我有一個視圖模型,將始終創建一個新的實體(Score);它不需要等待也不需要查詢存儲庫就可以知道這一點。明確檢索metdataStore

我(當前)想要在頁面加載時創建新實體並使用它來填充(KnockoutJS)視圖模型。

我認爲實體管理器懶洋洋地填充元數據,並通過單純地強制元數據填充進行不必要的查詢來欺騙我想要的行爲。 API文檔不包括此:

http://www.breezejs.com/sites/all/apidocs/classes/EntityManager.html#property_metadataStore

問題 有沒有辦法迫使管理者來填充元數據,而不會發出多餘的查詢?

這裏的欺騙代碼扁平化,以顯示其意圖:

manager.executeQuery(redundantQuery).then(function(data) { 
    var viewScore = manager.metadataStore.getEntityType("Score").createEntity(); 
    viewScore.ID(breeze.core.getUuid()); 
    viewScore.Value(57); 
    ko.applyBindings(viewScore, $ViewScore); 
}).fail(function(e){ 
    ... 
}) 

我很高興:

manager.metadataStore.then(function() { 

})... 

回答

2

單個MetadataStore可以存儲多個DataServices的元數據。 manager.dataService只是EntityManager的'默認'DataService,可能還有其他的。

3

好了,教訓....提問前嘗試。

這其實工作原理:

manager.metadataStore.fetchMetadata(manager.dataService).then(function() { 
    var viewScore = manager.metadataStore.getEntityType("Score").createEntity(); 
    viewScore.ID(breeze.core.getUuid()); 
    viewScore.Value(57); 
    ko.applyBindings(viewScore, $ViewScore); 
}).fail(function (e) { 
    ... 
}); 

我唯一剩下的問題是,爲什麼有必要通過manager.dataService?