C# 如何从ObjectContext中删除属于EntityObjects集合的EntityObject?
我想对我的C# 如何从ObjectContext中删除属于EntityObjects集合的EntityObject?,c#,.net,entity-framework,objectcontext,C#,.net,Entity Framework,Objectcontext,我想对我的ObjectContext执行删除 这是我的代码: var tempList = someEntityObject.SomeCollectionOfEntityObject; foreach (var item in tempList) { someObjectContext.DeleteObject(item); tempList.Remove(item); } 我想删除someEntityObject,但在此之前,我需要删除SomeCollectionOfEnt
ObjectContext
执行删除
这是我的代码:
var tempList = someEntityObject.SomeCollectionOfEntityObject;
foreach (var item in tempList)
{
someObjectContext.DeleteObject(item);
tempList.Remove(item);
}
我想删除someEntityObject
,但在此之前,我需要删除SomeCollectionOfEntityObject
中的所有对象。我有一个外键约束,它阻止我删除someEntityObject
当foreach第二次尝试循环时,我出现以下错误:
System.InvalidOperationException occurred
Message=Collection was modified; enumeration operation may not execute.
改为使用while循环:
while(someEntityObject.SomeCollectionOfEntityObject.Count > 0)
{
someObjectContext.DeleteObject(someEntityObject.SomeCollectionOfEntityObject.First());
}
改为使用while循环:
while(someEntityObject.SomeCollectionOfEntityObject.Count > 0)
{
someObjectContext.DeleteObject(someEntityObject.SomeCollectionOfEntityObject.First());
}
您可以先将集合填充到某个真正的临时列表中,而不是在tempList上使用foreach
var realList = tempList.ToList();
然后清除tempList,然后可以在realList上迭代。您可以先将集合填充到某个真正的临时列表,而不是在tempList上使用foreach
var realList = tempList.ToList();
然后清除tempList,然后可以在realList上迭代。另一个选项是在关系上指定级联删除 这将导致在删除someEntityObject时自动删除SomeCollectionOfEntityObject中的所有记录
请注意,必须在模型和数据库上执行此操作,才能使其可靠地工作。有关更多信息,请参阅本文:。另一个选项是在关系上指定级联删除 这将导致在删除someEntityObject时自动删除SomeCollectionOfEntityObject中的所有记录
请注意,必须在模型和数据库上执行此操作,才能使其可靠地工作。有关更多信息,请参阅本文:。我会这样做,我也会这样做