1

我有一个视图模型,它总是会创建一个新实体(分数);它不需要等待也不需要查询存储库来知道这一点。

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

})...
4

2 回答 2

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?

于 2012-12-21T21:29:24.343 回答
2

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

于 2012-12-21T21:50:51.633 回答