我如何找到这个Linq to SQL错误的底部?

时间:2009-11-20 17:29:44

标签: linq-to-sql

  

已尝试附加或   或许,添加一个非新的实体   从另一个装载   DataContext的。这不受支持。

与Linq合作了一段时间之后,我相信我知道它的局限性,并且在编写新代码时遵循规则。但是获得此异常令人沮丧,因为没有迹象表明哪个对象导致了违规。在具有多个DC的复杂数据操作方案中,我只能考虑反复试验以缩小可能的罪魁祸首。有没有办法找到更多?

1 个答案:

答案 0 :(得分:0)

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

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

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

如果Linq to SQL在这方面打击你,我会检查你的架构,看看你的方式是否是最佳的,特别是如果你发现很难识别导致错误的对象。通常,很难在DataContexts之间共享对象。你可以这样做(使用“附加”和“分离”之类的东西),但这对你来说很痛苦。