リクエストごとに 1 つの ObjectContext を使用することは良い方法と考えられますか? これらのオブジェクトは寿命が短く、インスタンス化するのにそれほどコストがかからないと読みましたが、これはリクエストごとに 1 つのオブジェクトを魅力的にしますか? はいの場合、これを適切に実装するパターンはありますか?
質問する
3701 次
1 に答える
5
はい、HttpRequest ごとに有効期間を持つ ObjectContext/DbContext を持つことは、受け入れられたアプローチです。別の回答で提供したサンプルを次に示します。
ただし、これらの有効期間の管理は IoC ライブラリに任せたほうがよいでしょう。有名なものはキャッスル・ウィンザー、オートファックです。
更新:コンテキストを破棄するには、Global.asax でメソッドを
使用できます。Application_EndRequest
次のコードはテストされていませんが、アイデアは得られます。
protected virtual void Application_EndRequest()
{
var key = "MyDb_" + HttpContext.Current.GetHashCode().ToString("x")
+ Thread.CurrentContext.ContextID.ToString();
var context = HttpContext.Current.Items[key] as MyDbContext;
if (context != null)
{
context.Dispose();
}
}
于 2013-05-14T13:06:56.937 に答える