我一直在尝试使用Entity Framework 4.1实施新的MVC3项目,该项目在Application_BeginRequest上实例化dbContext并将其放置在Application_EndRequest上

 protected virtual void Application_BeginRequest()
    {
        HttpContext.Current.Items["_EntityContext"] = new EntityContext();
    }

    protected virtual void Application_EndRequest()
    {
        var entityContext = HttpContext.Current.Items["_EntityContext"] as EntityContext;
        if (entityContext != null)
            entityContext.Dispose();
    }


EntityContext类的定义如下:

 public class EntityContext : MyEntities, IDisposable
{
    **//should this be static?**
    public static EntityContext Current
    {
        get { return HttpContext.Current.Items["_EntityContext"] as EntityContext; }
    }



    void IDisposable.Dispose()
    {
        Current.Dispose();
    }


我的问题是,将我的Current属性定义为static是否会在多用户方案中引起任何问题?

最佳答案

您在DbContext上的寿命太长了。您应该为每个请求至少增加一个,最好是对数据库的访问增加一个。

10-06 16:05