使用多个LINQ to SQL DataContexts添加相关数据

时间:2008-12-27 01:21:45

标签: .net sql-server linq linq-to-sql

我正在使用Linq to SQL开发桌面应用程序。从我收集的内容来看,最好保持DataContext对象的生命周期,但我遇到了以下难题:

我的应用程序有很多我想在客户端缓存的查找类型数据。我想缓存它的原因是因为我不想在我进行大型ETL类型操作时需要为每个子记录查找相应的父记录。

当我对数据库执行更新时,我需要将更新的记录与此查找数据相关联。现在,使用单个全局DataContext,这很简单:我只需将新的子记录添加到查找对象的关系集合中,然后点击SubmitChanges()。

但是如果我从我最初从中获取数据的那些创建新的DataContexts,我该如何才能最好地管理更新这些相关数据?我不能将缓存的数据用于我的新DataContext,因为它来自不同的数据。

这一切都让人很困惑 - 我应该放弃并学习实体框架吗?

非常感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用detach / attach删除与检索对象的数据上下文的关联,然后在准备好更新时将其连接到新的数据上下文。

更多信息here

您可以做的另一件事是查看nHibernate并使用Linq for nHibernate

答案 1 :(得分:1)

当涉及断开数据时,实体框架往往会打击你甚至更难。您应该能够非常轻松地使用LINQ-to-SQL和attach / detach。当然,您并不总是需要设置引用来关联数据;您还可以选择设置相关的 id - 即您通常拥有一对属性:

  • SomethingId(外键标识值)
  • 某事(参考)

您可以在不触及参考的情况下设置ID。