【发布时间】:2011-04-14 11:40:08
【问题描述】:
使用实体框架,我的代码使用 LINQ 来获取需要从数据库中删除的对象集合。根据具体情况,此集合有时相当大 - 30 或 40 个对象。
我继续尝试将这些对象与其相关对象分离,以便我可以删除它们,然后我针对每个对象调用 context.DeleteObject(),最后调用 context.SaveChanges()。
在大多数情况下,这非常有效,尤其是当要删除的对象集合非常小时。但是,当它很大时,此代码有时会在引用完整性方面抛出错误,具体来说:
The DELETE statement conflicted with the REFERENCE constraint
\"FK_ServiceFeatureSchemaFragmentSchemaFragment_SchemaFragment\".
The conflict occurred in database \"MyDataBase\",
table \"dbo.ServiceFeatureSchemaFragmentSchemaFragment\".\r\n
The statement has been terminated.
因此,有时我的对象似乎有额外的约束,我在删除之前无法找到和解耦。
我正在苦苦挣扎的是,因为我正在处理一个相对较大的集合,所以我无法确定是哪一个(或多个)导致了这种情况的发生。我正在寻找有关如何通过以某种方式识别问题对象来继续前进的建议,例如,有没有一种方法可以让您预先确定集合中的对象是否会在您之前抛出这些类型的错误删除它们?还是其他方法?
非常感谢您的建议。
【问题讨论】:
标签: .net entity-framework