我一直在尝试使用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上的寿命太长了。您应该为每个请求至少增加一个,最好是对数据库的访问增加一个。