显式检索metdataStore

时间:2012-12-21 21:27:00

标签: breeze

我有一个视图模型,它将始终创建一个新实体(Score);它不需要等待也不需要查询存储库来了解这一点。

我(当前)想要在页面加载时创建新实体,并使用它来填充(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 个答案:

答案 0 :(得分: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?

答案 1 :(得分:2)

单个MetadataStore可以存储多个DataServices的元数据。 manager.dataService只是EntityManager的“默认”DataService,可能还有其他的。