我已经获准在我们的 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/