基本的に、EF モデルへのアクセスを制御するリポジトリがあります。参照を作成し、アクセスされているリポジトリに応じて、要求されたエンティティを返します。現在、ライブ ObjectContext からエンティティを直接返す IQueryable Get メソッドを公開しています。ObjectContext の使用を using ステートメント内にラップして、適切に破棄されるようにすることをお勧めしますが、リポジトリからこれを行うと、コントローラーがロードするまでに ObjectContext が既に破棄されているというエラーが表示されます。using を削除したところ、問題なく動作しましたが、通常はどのようにアプローチすればよいか知りたいです。さまざまなコマンドを実行する必要がある可能性があるため、IQueryable の戻り値を維持したいと考えています。助言がありますか?複数の HTTP 要求が着信し始めた場合、EF は開いている接続にヒットするのを防ぐのに役立ちますか?
エラー出力:
public IQueryable<IUser> Get
{
get
{
using (var context = new DrinkersPassportEntities(_connString))
{
return context.Users.AsQueryable();
}
}
}
動作しますが、夜は眠れません:
public IQueryable<IUser> Get
{
get
{
var context = new DrinkersPassportEntities(_connString);
return context.Users.AsQueryable();
}
}
現時点で私のコントローラーが行っているのはこれだけです:
public ViewResult Index( )
{
return View(userRepo.Get);
}