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中的所有记录


请注意,必须在模型和数据库上执行此操作,才能使其可靠地工作。有关更多信息,请参阅本文:。

我会这样做,我也会这样做