ナビゲーション プロパティでさらに別の問題が発生していますが、今回の構成は WCF Data Service + EF です。
基本的に、メタデータは見栄えがよく、参照制約、関連付けなどがあります... モデルに [ForeignKey] 属性を設定しました。
ナビゲーション プロパティはクライアント側で作成されますが、($expand を使用して) データを取得すると、データはサーバーによって確実に返されますが、コレクションは満たされません。
ここでの関連付けは、OpenPosition の mandate_id と Mandate の id の間です。
OpenPositions コレクションの Mandate エンティティに、エンティティへの uri と共に __deferred が含まれていることに気付きました。私はWebApiでそれを見たことがなかったので、それが問題なのか、それとも単に通常の動作なのか.
私が欠けているものはありますか?
編集
クライアント側のクエリは次のとおりです。
var query = breeze.EntityQuery.from("Mandates").inlineCount().expand("OpenPositions");
return manager.executeQuery(query.using(service)).then(function (result) {
logger.info(result);
}).fail(function (error) {
logger.error(error);
});
編集2
ナビゲーション プロパティが入力されていない理由は、WCF Dataservice の場合、ナビゲーション プロパティがオブジェクトとして返され、結果と呼ばれる配列プロパティが含まれているためです。
一方、WebAPI の場合、ナビゲーション プロパティは配列として返されます。
どちらの場合も、同じデータ モデル (EF コンテキスト) が使用されていることに注意してください。
スクリーンショットを見る:
WCF :
WebAPI:
しかしそよ風はそれ以外の場合は配列を期待し、ナビゲーション プロパティを無視して null を返します。
// needed if what is returned is not an array and we expect one - this happens with __deferred in OData.
if (!Array.isArray(relatedRawEntities)) return null;