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

1つのMetadataStoreで、複数のDataServiceのメタデータを保存できます。manager.dataServiceは、EntityManagerの「デフォルト」のDataServiceであり、他にも存在する場合があります。

于 2012-12-21T21:50:51.633 に答える