EFでかなり新しいです...現在、EFでasp.netのWebサイトを開発していますが、接続に関する例外が発生します。例外エンティティフレームワークを使用しているときに接続の現在の状態が破損しています
私は私がプログラムされてきた。これによると、この記事http://cgeers.com/2009/02/21/entity-framework-objectcontext/を読んだ:
public static class ObjectContextPerHttpRequest
{
public static tradeEntities Context
{
get
{
string objectContextKey = HttpContext.Current.GetHashCode().ToString("x");
if (!HttpContext.Current.Items.Contains(objectContextKey))
{
HttpContext.Current.Items.Add(objectContextKey, new tradeEntities());
}
return HttpContext.Current.Items[objectContextKey] as tradeEntities;
}
}
}
をして、私がために...どこか私のウェブサイト上で、私は製品を取得する必要がmyEntities et = p.ObjectContextPerHttpRequest.Context;
を使用これを行うには、私はこれを使用します:
public List<tProducts> returnProductsFromSubcategory(int subcategoryID)
{
var prod = from p in et.tProducts
from c in et.tCompany
where (c.companyID == p.fk_companyID && c.enable == true)
where (p.subCategoryID == subcategoryID && p.enable == true)
select p;
//et.Connection.Close();
return prod.ToList(); //Here comes an Exception The connection's current state is broken.
}
時にはうまくいくことがありますが、時には例外が発生することがあります。
System.InvalidOperationExceptionコマンドの実行には、開いて利用可能な接続 が必要です。接続の現在の状態は です。
私は何が間違っているのかよくわかりません。私はdispose関数を実装すべきだと読んだが、どこに追加するのか、どうすればいいのだろうか?
ご協力いただきありがとうございます。
マーティン
ObjectContextは、データベースにもうクエリする必要がなくなったときに使用した各要求処理で処理する必要があります。これが、静的コンテキストアクセサーを使ったこのアプローチがあまり有用ではない理由です。 –
OK、処分方法は?どういうわけかダイナミックにできますか? –
Ups ...私の質問は忘れてしまったようです...私はどのようなヒントに対しても、私はどのように処分行動をプログラムすることができますか非常に感謝しています。ありがとう。 –