【问题标题】:Handling Data Context in LINQ to SQL with ASP.NET web application使用 ASP.NET Web 应用程序处理 LINQ to SQL 中的数据上下文
【发布时间】:2011-06-07 07:31:10
【问题描述】:

我在我的 ASP.NET Web 应用程序中使用数据上下文。

 ComponentDBDataClassesDataContext db = new ComponentDBDataClassesDataContext();
 int ifUserExists = (from result in db.Customers where (userName == result.UserName) && (password == result.Password) select result.UserName).Count();

每次使用数据上下文时都应该关闭它吗?如果是这样,我为什么要关闭它?如果不应该关闭,为什么?

谁能给我一些详细而清晰的解释?

谢谢你的期待

【问题讨论】:

    标签: asp.net linq-to-sql web-applications datacontext


    【解决方案1】:

    当您拥有 DataContext 时,它可以帮助您跟踪已从其表中检索或附加到表中的对象的更改。

    因此,您可能不应该每次都关闭数据上下文,但除非您依赖数据上下文来跟踪您所做的所有更改 - 并且您有类似实例的单例,否则您可能应该将每个实例的生命周期限制为 using实例并在每个操作上提交/回滚。否则你会占用大量内存来换轨。

    但我认为很难对您的问题给出简单的是/否的答案。

    【讨论】:

    • 可能你想看看这个:stephenwalther.com/blog/archive/2008/08/20/…辩证法
    • @user653622:我明白了;可能我应该编辑我的帖子以强调SubmitChanges 的受控使用,而不是让事务回滚,而不是让它成为using 的问题。 (过去我做了一些糟糕的设计,我引用了一个特定的数据上下文,然后不小心提交了一个应该被丢弃的事务;这就是为什么我宁愿具体处理。)如前所述返回 IEnumerable在帖子中并不总是我首选的解决方案,但在这些情况下,处理上下文当然是至关重要的。但是感谢您的链接
    【解决方案2】:

    关于这个已经写了很多了。一般来说,我建议您为每个工作单元坚持一个数据上下文。因此,每次使用时都将其包装在 using() 中。

    在这里查看一篇不错的文章: http://www.west-wind.com/weblog/posts/2008/Feb/05/Linq-to-SQL-DataContext-Lifetime-Management

    或者在stackoverflow上: When should I dispose of a data context

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-12
      • 1970-01-01
      • 2011-02-11
      • 2011-02-06
      • 2011-02-16
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多