从另一个数据上下文加载数据上下文实体

本文关键字:上下文 数据 实体 加载 另一个 | 更新日期: 2023-09-27 18:25:14

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

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

像这样的东西:

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

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

有可能吗?

从另一个数据上下文加载数据上下文实体

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

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

但我认为,您真正想要的是一个与LINQ to SQL配合使用的缓存解决方案。这可能是一个很好的起点:如何在Linq-to-SQL中实现缓存?