在ASP .NET MVC应用程序中创建和重用datacontext的最佳方法

时间:2015-11-20 13:25:20

标签: asp.net asp.net-mvc locking dbcontext httpcontext

我已阅读this帖子,我对于创建和使用datacontext的最佳方式感到困惑?

我一直以为你应该使用像下面这样的单身(+锁定)

private static ModelDataContext dataContext=null;
protected static ModelDataContext DataContext
{
  get
  {
       if(dataContext==null)
           dataContext = new ModelDataContext();
       return dataContext;
   }
}

然而,他在短短的文章中写道:

LINQ DataContexts缓存您所做的一些数据和更改 - 如果每个实例的处理速度都不快,您可以快速占用内存。 TableAdapters保存打开的SQLConnections以供重用 - 因此,如果您使用足够的TableAdapter类,则可以使用足够的不同静态变量来绑定所有数据库连接。

并建议使用下面的模型

protected static ModelDataContext DataContext
{
  get
  {
       if(System.Web.HttpContext.Current.Items["ModelDataContext"]==null)
           System.Web.HttpContext.Current.Items["ModelDataContext"] = new ModelDataContext();
       return (ModelDataContext)System.Web.HttpContext.Current.Items["ModelDataContext"];
   }
}

你有什么想法?

1 个答案:

答案 0 :(得分:0)

我强烈建议使用依赖注入容器(例如ninject)为每个Web请求实例化DataContext