从另一个datacontext

时间:2015-12-01 11:21:22

标签: c# linq copy clone datacontext

我使用linq to sql来处理数据库。 我有一个DataContext实例,它在程序启动时加载了很多实体并将它们提取到ram。

现在我需要创建一个新的DataContext并从我的第一个DataContext加载实体,而不是从数据库中获取它们。 (因为从本地网络中的数据库获取实体的速度问题)

类似的东西:

DataContext _globalDC = DB._dc;
//Do some entity loading ...
DataContext _localDC = _globalDC.Clone()

现在我应该能够使用_localDC(搜索,插入,更新,...)正常工作,而不会影响_globalDC。

有可能吗?

1 个答案:

答案 0 :(得分:0)

不可能。 DataContext没有原生Clone方法,因此如果您创建了一个名为Clone的扩展方法,则只能复制公共属性。但是上下文的内部状态使其成为一个工作环境(元数据和状态跟踪以及所有)。

最好的机会是克隆实体对象并将它们附加到新的上下文中。

但我认为你真正想要的是一个与LINQ-to-SQL一起使用的缓存解决方案。这可能是一个很好的起点:How do you implement caching in Linq to SQL?