C# ASP.NET中每个请求的实体框架对象上下文?
每个请求使用一个ObjectContext是否被认为是一种好的做法?我了解到这些对象应该是短期的,并且实例化成本不高,但这是否会使每个请求都需要一个对象?如果是,是否有任何模式可以正确实现这一点?是的,将ObjectContext/DbContext与每个HttpRequest的生命周期结合起来是一种公认的方法。我已在另一份答覆中提供 无论如何,最好将这些终身管理留给国际奥委会图书馆。著名的是 更新:C# ASP.NET中每个请求的实体框架对象上下文?,c#,asp.net,web-applications,entity-framework-4.1,objectcontext,C#,Asp.net,Web Applications,Entity Framework 4.1,Objectcontext,每个请求使用一个ObjectContext是否被认为是一种好的做法?我了解到这些对象应该是短期的,并且实例化成本不高,但这是否会使每个请求都需要一个对象?如果是,是否有任何模式可以正确实现这一点?是的,将ObjectContext/DbContext与每个HttpRequest的生命周期结合起来是一种公认的方法。我已在另一份答覆中提供 无论如何,最好将这些终身管理留给国际奥委会图书馆。著名的是 更新: 要处理上下文,可以使用Global.asax中的Application\u EndReques
要处理上下文,可以使用Global.asax中的
Application\u 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();
}
}
简短回答:是的。更多细节(模式…):这是webforms还是MVC?在webforms中使用IOC似乎有点复杂。由于我有一个小的应用程序,我想我将使用您所指的示例中建议的解决方案。那么现在,有没有办法在请求终止后强制处理请求范围的上下文对象?@kfc更新了我的答案。