Entity Frameworkの参照が自動的に読み込まれない

ado.net c# entity-framework

質問

ADO.Net Entity Frameworkでは、他のオブジェクトへの4つの参照を持つオブジェクトがあります。何らかの理由で、これらの参照を照会すると、そのうちの2つが(予想どおりに)自動的にロードされ、そのうち2つが常にnullを返します。

奇妙なことに、私が手動で参照をロードするように頼むとき、それらはただダンディロードします。

例として:

if (account.HoldingEntity == null && 
    account.HoldingEntityReference.EntityKey != null) {

    account.HoldingEntityReference.Load();
    account.HoldingEntity = account.HoldingEntityReference.Value;
}

私が最初にHoldingEntityチェックするとき、それは常にnullです、しかし、ロードは問題なくHoldingEntityを返します。

何か手がかりはありますか?

ありがとうございます。

受け入れられた回答

ADO.NETエンティティを使用して、 IncludeようにIncludeを使用して自動的に読み込むエンティティを指定する必要があります。

Dim entity = (From e in db.Entities.Include("SubEntity"))

人気のある回答

他の人が言っているように、 .Load()を呼び出す必要を避けるためにv1では.Include()が必要です

4.0では、 ObjectContext DeferredLoadingEnable dを設定できるようになりObjectContext (Beta2にLazyLoadingEnabledて、この名前をより適切なLazyLoadingEnabledに変更していると思います)。

とにかくなぜあなたは2つの関係がすでにロードされているのですか。これは、おそらく関係修正と呼ばれるものの副作用です。

2つの関連エンティティが同じコンテキスト内にある場合、それらは互いを指すように自動的にそれらの関係を修正します。つまり、4つのエンティティのうち2つがすでにコンテキスト内にある場合、クエリを実行すると、 .Include()呼び出さなくても、2つの関係が読み込まれる状況に陥ることになります。または.Load()

お役に立てれば

乾杯アレックス



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ