c# - 在 LINQ to SQL 中处理 DataContext 的最佳方式

标签 c# linq-to-sql

我已经获准在我们的 ASP.NET 应用程序中为新模块实现 LINQ to SQL。我忘记了处理检索对象所需的 DataContext 的最佳方法;我应该在使用它的每个方法中创建它,还是有某种 Utility 类以不同的方式管理它?

例如,我有一个 ActiveRecord 样式检索实体的类。我应该使用类似的东西吗:

using (MyAppDataContext context = new MyAppDataContext()) 
{
    // do stuff here...
}

在这些方法中的每一个?我看到这在 LINQ 教程中经常使用,但我也看到了一种方法,其中有一个 Utilities 类,它有一些返回 DataContext 的方法(GetContext 或相似的);我忘记了该方法是否只是 new up 的包装器,或者它是否执行某种单例类型的机制。

哪种方法更好?

最佳答案

就我个人而言,我使用类似这样的东西:

public class MyClass : MyBaseClass
{
     public void GetData()
     {
          using(DbDataContext db = new DbDataContext())
          {
              // DO STUFF
          }
     }

     public void PerformLogicallyAtomicAction()
     {
          using(DbDataContext db = new DbDataContext())
          {
              // DO STUFF
          }
     }
}

除非需要更长时间地保持数据上下文打开。

更新

进一步澄清我这样做的原因:

1) 我不希望某个对象在内存中的时间超过我需要的时间

以下是主要原因

2)在某些情况下,跟踪更改数据会导致数据过时(参见 OP 的第二条评论)

3)创建新对象花费0时间(有效)

4) 通过在每次需要时创建它,我可以更改特定的 LINQ 选项(例如 ObjectTrackingEnabled (我经常关闭它)

关于c# - 在 LINQ to SQL 中处理 DataContext 的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6790755/

相关文章:

c# - Entity Framework 6 - Npgsql - 连接字符串错误

c# - 网站 gridview 无法在 azure 上的 iis 上工作

c# - LINQ 中的可迭代析取

c# - 在递归方法中使用 LinqToSql 对性能非常不利

.net - count(*) 的 SQL 语句有问题

c# - 存储过程的 LINQ to SQL 自动生成类型

c# - TypeBuilder 的 Type.GetMethod 替代方案

c# - MySql插入忽略性能

c# - LINQ 查询返回列表列表

c# - Telerik RadGrid 中的数据未使用 LINQ-to-SQL 更新(奇怪的行为)