【发布时间】:2009-11-20 17:29:43
【问题描述】:
已尝试附加或 添加一个不是新的实体,也许 从另一个加载 数据上下文。这不受支持。
使用 Linq to SQL 已经有一段时间了,我相信我知道它的局限性,并且我在编写新代码时会遵守规则。但是得到这个异常是令人沮丧的,因为没有迹象表明是哪个对象导致了违规。在具有多个 DC 的复杂数据操作场景中,我只能考虑反复试验来缩小可能的罪魁祸首。有没有办法了解更多?
【问题讨论】:
标签: linq-to-sql
已尝试附加或 添加一个不是新的实体,也许 从另一个加载 数据上下文。这不受支持。
使用 Linq to SQL 已经有一段时间了,我相信我知道它的局限性,并且我在编写新代码时会遵守规则。但是得到这个异常是令人沮丧的,因为没有迹象表明是哪个对象导致了违规。在具有多个 DC 的复杂数据操作场景中,我只能考虑反复试验来缩小可能的罪魁祸首。有没有办法了解更多?
【问题讨论】:
标签: linq-to-sql
如果您将一个对象附加到您的 DataContext,它必须是您使用 new 运算符创建的。如果从 DataContext 中读取对象,则必须将其保存到同一个 DataContext。
为了缓解这类问题,我总是使用单个 DataContext,并且我在“工作单元”的基础上做所有事情。
一般来说,这意味着,在任何给定时间,我都在读取我需要的记录、对这些记录执行工作并保存更改,所有这些都在一个工作单元中,使用单个 DataContext。由于它是一个工作单元,它不会渗透到其他 DataContext 对象中。
如果 Linq to SQL 在这方面与您抗衡,我会检查您的架构,看看您的操作方式是否最佳,尤其是当您发现难以识别导致错误的对象时。一般来说,很难在 DataContext 之间共享对象。你可以做到(使用“附加”和“分离”之类的东西),但这很麻烦。
【讨论】: