問題:
エンティティフレームワークを操作する場合、このイライラするエラーに遭遇する可能性があります。"The ObjectContext instance has been disposed and can no longer be used for operations that require a connection."
これは、既に閉じられているdbContextで怠zyなロードが使用されている場合に発生します。
怠zyと熱心な読み込みを理解する:
エンティティフレームワークは、関連するデータをロードするための2つのアプローチを提供します:
が(通常は
ステートメント内)DbContext
の前に処分されるためにエラーが発生します。 処分されると、接続が閉じられているため、さらなるデータベース操作が妨げられます。
using
ソリューション:熱心な負荷を使用してください
最も効果的な解決策は、熱心な負荷に切り替えることです。 エンティティフレームワークのロード関連データを需要にする代わりに、メソッドを使用して最初のクエリにそれらを明示的に含める:
この行は、プロパティがInclude
の前に
<code class="language-csharp">IQueryable<memberloan> query = db.MemberLoans.Include(m => m.Membership);</code>および
を実際のエンティティおよびプロパティ名に置き換えることを忘れないでください。 複数の関連するエンティティの場合、複数のMembership
呼び出しをチェーンします
この積極的なアプローチは、必要なすべてのデータがの範囲内で取得され、「廃棄された」エラーを排除し、スムーズな動作を確保することを保証します。
以上がエンティティフレームワークで「ObjectContextインスタンスが廃棄された」エラーを修正する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。