我使用linq to sql来处理数据库。 我有一个DataContext实例,它在程序启动时加载了很多实体并将它们提取到ram。
现在我需要创建一个新的DataContext并从我的第一个DataContext加载实体,而不是从数据库中获取它们。 (因为从本地网络中的数据库获取实体的速度问题)
类似的东西:
DataContext _globalDC = DB._dc;
//Do some entity loading ...
DataContext _localDC = _globalDC.Clone()
现在我应该能够使用_localDC(搜索,插入,更新,...)正常工作,而不会影响_globalDC。
有可能吗?
答案 0 :(得分:0)
不可能。 DataContext
没有原生Clone
方法,因此如果您创建了一个名为Clone
的扩展方法,则只能复制公共属性。但是上下文的内部状态使其成为一个工作环境(元数据和状态跟踪以及所有)。
最好的机会是克隆实体对象并将它们附加到新的上下文中。
但我认为你真正想要的是一个与LINQ-to-SQL一起使用的缓存解决方案。这可能是一个很好的起点:How do you implement caching in Linq to SQL?