每个请求使用单个 ObjectContext 是否被认为是一种好习惯?我读到这些对象应该是短暂的,并且实例化成本不会很高,但这是否会使每个请求都吸引其中一个?如果是,是否有任何模式可以正确实现这一点?
问问题
3701 次
1 回答
5
是的,让 ObjectContext/DbContext 具有每个 HttpRequest 的生命周期是一种公认的方法。这是我在另一个答案中提供的示例。
但是,最好将这些生命周期管理留给 IoC 库。著名的有Castle Windsor、Autofac。
更新:
要处理您的上下文,您可以使用Application_EndRequest
Global.asax 中的方法。以下代码未经测试,但您会明白的:
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 回答