从另一个数据上下文加载数据上下文实体
Load datacontext entities from another datacontext
我正在使用 linq to sql 来处理数据库。
我有一个 DataContext 实例,它在程序开始时加载大量实体并将它们提取到 ram。
现在我需要创建一个新的 DataContext 并从我的第一个 DataContext 加载实体,而不是从数据库中获取它们。 (由于从本地网络中的数据库获取实体的速度问题)
像这样:
DataContext _globalDC = DB._dc;
//Do some entity loading ...
DataContext _localDC = _globalDC.Clone()
现在我应该可以正常使用 _localDC(搜索、插入、更新……)而不影响 _globalDC。
可以吗?
不可能。 DataContext
没有原生 Clone
方法,因此如果您要创建名为 Clone
的扩展方法,您只能复制 public 属性。但正是上下文的内部状态使其成为工作上下文(元数据和状态跟踪等)。
最好的机会是克隆 实体对象 并将它们附加到新上下文。
但我认为您真正要找的是一个与 LINQ-to-SQL 一起工作的缓存解决方案。这可能是一个很好的起点:How do you implement caching in Linq to SQL?
我正在使用 linq to sql 来处理数据库。 我有一个 DataContext 实例,它在程序开始时加载大量实体并将它们提取到 ram。
现在我需要创建一个新的 DataContext 并从我的第一个 DataContext 加载实体,而不是从数据库中获取它们。 (由于从本地网络中的数据库获取实体的速度问题)
像这样:
DataContext _globalDC = DB._dc;
//Do some entity loading ...
DataContext _localDC = _globalDC.Clone()
现在我应该可以正常使用 _localDC(搜索、插入、更新……)而不影响 _globalDC。
可以吗?
不可能。 DataContext
没有原生 Clone
方法,因此如果您要创建名为 Clone
的扩展方法,您只能复制 public 属性。但正是上下文的内部状态使其成为工作上下文(元数据和状态跟踪等)。
最好的机会是克隆 实体对象 并将它们附加到新上下文。
但我认为您真正要找的是一个与 LINQ-to-SQL 一起工作的缓存解决方案。这可能是一个很好的起点:How do you implement caching in Linq to SQL?