2016-04-05 3 views
0

この不規則性が時々起こるため、これはEF遅延問題または実際のEFバグかどうかわかりません(aprox。同じコードで10回に1回) 問題何らかの理由で、時には何らかのランダムなナビゲーションプロパティ(常に同じではない)がアクティブローディングやアクティブなプロキシ作成を積極的にロードしていないことがあります。LazyLoadingがナビゲーションのプロパティをロードするのが面倒すぎる

この例は、Personを表す+ - 40個のフィールドを持つフォームであり、多くの他のテーブルとのリレーショナル接続を持ち、他のテーブルは他のテーブルに接続します。 私はフォームに関係するテーブルの数のために私には最良のアプローチと思われるので、遅延読み込みを使用しています。問題は、いくつかのフィールドが空白のように見えるということです。プロパティが読み込まれません。

実際の質問は、EFが遅延ロードナビゲーションプロパティを停止するか、またはその半分だけをロードする理由がわかっている

サンプルコードが複雑すぎるため、プライベート(企業)でここを共有できません。

+1

通常エンティティをロードするために使用された 'DbContext'がスコープから外れて、処分された、そして/またはGC'dされたとき、これが起こることがわかります。フィールドにフォームを記入する必要があることが分かっている場合は、そのフィールドを '.Include()'してください。 – CodingGorilla

+0

ありがとうCodingGorilla、これは実際には、私は廃棄/ Gcによって引き起こされた多くの投稿を見てきましたが、これはケースではない、私はすでにDispose()を私のdbcontextでコメントしました。なぜなら、アプリケーションが非常に広範で、遅延読み込みの前提で構築されているからです。すべてを確実にインクルードすることはかなり賢明です。それ以外に、それ以上のアイデアはありますか? –

答えて

0

はこれを試してみてくださいたくさんの再試行があったのですが、別のdbcontextのオブジェクトがあった場合、その時点からlazzyloadingが機能しなくなりました(今は意味があります....:P)

0

もう少し前に同様の問題がありました。クエリの最後に.ToList()を使用 は私のために問題を修正:後、上記の問題は、全体DbContextをリロードすることによって、長い時間前に解決した

using(EntityContext db = new EntityContext()) 
{ 
    db.LazyLoadingEnabled = true; 
    List<Persons> persons = db.Persons.ToList(); 
} 
+0

こんにちは、私のケースでは、人のリストではなく、すべてのプロパティをロードしていない "Person"が1人だけです.ToList()を試しただけでなく、FirstOrDefault()負荷しないでください。それは私のための解決策ではありません。 –

関連する問題