Service クラス (ASP.NET MVC アプリケーション内) の現在の取得パターンは次のようになります。
public Client Get(int id)
{
using (var repo = _repoFactory.Get<Client>())
{
return repo.Get(id);
}
}
Where_repoFactory.Get<T>()
は、破棄されると Entity Framework も破棄するリポジトリを返しますDbContext
。
ただし、Get(int id)
メソッドのコンシューマーがオブジェクトでナビゲーション プロパティを使用する必要がClient
ある場合は、コンテキストが既に破棄されているため、例外がスローされます。
この問題を交渉するいくつかの方法を予見できます。
- サービス外でナビゲーション プロパティを使用しないでください
- 遅延読み込みナビゲーション プロパティを使用しない
- リクエストが終了したときにコンテキストを破棄する別の方法を見つける
「正しい」(または最も間違っていない)方法とは何ですか?