0

ここで行われた会話に従って作成したコマンドラインツールを使用して、POCO モデルのメタデータを生成します: https://stackoverflow.com/a/14904913/178620

このメタデータを使用しても、Breeze は単純なクエリで読み込まれたエンティティを具体化していないことがわかりました。その結果、typeInitializersは実行されず、エンティティ プロパティは観察可能ではありません。

ko.computed関数で定義したプロパティがtypeInitializer以前に機能していたため、セットアップとメタデータが正しいことはわかっています。何が変わったのか説明しよう!

以前は、AutoMapper を使用していたためIQueryable、回避しなければならなかったため、jQuery を使用してエンティティを 1 つずつ読み込む必要がありました。mergeEntityこの方法ではエンティティが実体化されないため、関数を公開しentityManagerて手動でこれを行うと、できあがり (控えめな表現) が機能しました。

それ以来、クロスカッティング モデルを実装し、AutoMapper を排除しました。今ではIQueryable再び使用できるようになり、Breeze クエリが使用できるようになりました。ただし、エンティティが意図したとおりに機能しない理由については困惑しています。

4

1 に答える 1

0

yourEntityManager.metadataStore.getEntityTypes() メソッドによって返された entityTypes を見て、これをサーバーによって返された json に埋め込まれたエンティティ タイプ名と比較します。

json の結果の各エンティティの $type プロパティは、metadataStore で対応する「entityType」を見つけるために使用されます。私の推測では、タイプ名が現在異なっているか、ApiController に [BreezeController] 属性がありません。この属性により、正しい JSON.NET シリアル化設定が使用されることが保証されます。

于 2013-04-01T18:18:30.573 に答える