我该如何处理LINQ DB Context对象?

时间:2011-02-02 15:51:20

标签: c# linq datacontext

创建一次并将其保留在那里,重新使用它(可能来自静态属性)或者在每次访问数据库时创建它都会更好吗?

4 个答案:

答案 0 :(得分:1)

在使用Entity(或LINQ to SQL)上下文时,通常认为使用Unit Of Work模式是最佳做法。

这通常相当简单,因为上下文包含了所有困难的工作。您所要做的就是:

  1. 创建上下文。

  2. 执行构成单个工作单元的所有操作。

  3. 提交更改(如有必要)。如果出现错误,您可以回滚。

  4. 处理上下文。

答案 1 :(得分:1)

为每次访问数据库创建一个新的。也将它放在一个使用声明中:

using (var db = new MyDatabase())
{
    // do query
}

答案 2 :(得分:0)

这个问题有一些重复(请看本页的右侧) - 如果结果没有结束,我会感到惊讶。

就我而言,我将向您推荐我给另一个问题的答案,其中我讨论了L2S的生命周期。

How linq to sql works with sql connections?

答案 3 :(得分:0)

我还想补充一点,你对待DataContext的方式取决于


一个。您的申请的性质。
湾业务需求。

因此,如果您正在使用IIS或.net支持的任何其他Web服务器开发Web应用程序,由于处理模型的性质,最好为每个工作单元(原子操作)使用新的DataContext实例与此瘦客户端开发案例相关联。

但是,如果您的应用程序在proccess中运行,该进程在执行和状态(WinForms,WPF)方面具有高度可控性,并且您希望让您的datacontext在UserSession的上下文中运行(每个用户一个单个DataContext)每个会话),您可以将其创建与应用程序启动时联系起来,并在即将卸载应用程序时将其处理掉。您还可以看一下使用Singleton模式。