[英]Linq to SQL Extended Data Classes - Share a DataContext
我正在使用Linq2SQL的部分类功能向我的对象添加一些辅助方法。
问题是我需要在这些辅助方法中执行一些额外的数据库查询,所以我每次都要创建一个新的DataContext。
我想在单个Web服务查询中为所有数据库操作重用DataContext。
如果我将辅助方法保存在一个单独的类中,我只需在类构造函数中初始化一次上下文,并将其重用于所有方法。
使用扩展的Linq2SQL类,我无法弄清楚如何获取对用于检索当前对象的相同DataContext的引用。
事实上,你不可能真的如此。 尤其是,因为LINQ-to-SQL可以与POCO一起使用。 您必须手动处理数据上下文,如果要在各个点使用它们,请保留它们。 这里的一种方法可能是从数据上下文而不是叶子对象使方法可用 - 然后你被迫知道数据上下文。
在某些情况下,保持数据上下文对“请求”或“上下文”对象可用是解决此问题的好方法,因为这通常很容易获得。
我不相信有办法获得创建数据上下文。 您必须将其传递给自定义方法。 在我的实体部分类中,我做了很多这样的操作:
public void Query()
{
using (var db = new DataContext())
{
Query(db);
}
}
public void Query(DataContext db)
{
/* do something with the db */
}
这使您可以灵活地传入创建对象的DataContext,或者仅在紧要关头使用新的对象。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.