3

每个请求使用单个 ObjectContext 是否被认为是一种好习惯?我读到这些对象应该是短暂的,并且实例化成本不会很高,但这是否会使每个请求都吸引其中一个?如果是,是否有任何模式可以正确实现这一点?

4

1 回答 1

5

是的,让 ObjectContext/DbContext 具有每个 HttpRequest 的生命周期是一种公认​​的方法。这是我在另一个答案中提供的示例。

但是,最好将这些生命周期管理留给 IoC 库。著名的有Castle WindsorAutofac

更新:
要处理您的上下文,您可以使用Application_EndRequestGlobal.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 回答