Linq to sql 如何找出这个Linq到SQL错误的根源?

Linq to sql 如何找出这个Linq到SQL错误的根源?,linq-to-sql,Linq To Sql,已尝试连接或删除 添加一个可能不是新的实体 从另一个地方装载的 数据上下文。这是不受支持的 使用LINQtoSQL已经有一段时间了,我相信我知道它的局限性,并且在编写新代码时遵循规则。但是得到这个异常是令人沮丧的,因为没有迹象表明是哪个对象导致了冲突。在具有多个DC的复杂数据操作场景中,我只能考虑尝试和错误来缩小可能的罪魁祸首。是否有办法了解更多信息?如果将对象附加到DataContext,则该对象必须是由您使用新运算符创建的。如果从DataContext读取对象,则必须将其保存到同一DataC

已尝试连接或删除 添加一个可能不是新的实体 从另一个地方装载的 数据上下文。这是不受支持的


使用LINQtoSQL已经有一段时间了,我相信我知道它的局限性,并且在编写新代码时遵循规则。但是得到这个异常是令人沮丧的,因为没有迹象表明是哪个对象导致了冲突。在具有多个DC的复杂数据操作场景中,我只能考虑尝试和错误来缩小可能的罪魁祸首。是否有办法了解更多信息?

如果将对象附加到DataContext,则该对象必须是由您使用新运算符创建的。如果从DataContext读取对象,则必须将其保存到同一DataContext

为了缓解这类问题,我总是使用单个DataContext,并且我在“工作单元”的基础上做任何事情

一般来说,这意味着,在任何给定的时间,我都在读取我需要的记录,对这些记录执行工作,并保存更改,所有这些都在单个工作单元中,使用单个DataContext。因为它是一个工作单元,所以不会渗透到其他DataContext对象中


如果linqtosql在这方面与您作对,我会检查您的体系结构,看看您的方式是否是最佳的,特别是当您发现很难识别导致错误的对象时。一般来说,很难在数据上下文之间共享对象。您可以这样做(使用“附加”和“分离”之类的方法),但这是一件麻烦事。

我还没有找到在有状态web应用程序中重新附加分离对象的方法。我有一个可靠的解决方案。在这里的例子中,我试图做一些“子单元”的工作来操作主数据上下文获得的数据。这似乎是不可能的。如果我在一个数据上下文中加载一个实体,然后在另一个数据上下文中对其进行更改,那么在最后的SubmitChanges()中会出现此错误。看来我必须确保每个工作的“子单元”都能独立处理所有事情。谢谢您的建议。如果您仍要使用原始数据对象,可以将原始数据上下文作为参数传递给子单元。但是,是的,我大体上同意子单元是独立的这一前提。我正是通过这样做解决了这个问题,但我仍然想知道是否有办法找出是什么对象导致了这个异常。我不知道。您必须在代码中散布SubmitChanges()调用,直到能够将罪魁祸首对象括起来。