Entity framework 4 在实体框架中手动删除对象树

Entity framework 4 在实体框架中手动删除对象树,entity-framework-4,Entity Framework 4,如果我想手动删除一个对象及其所有子对象, 我如何做(我不想使用级联删除) 当我尝试迭代子列表时-我得到一个异常,因为我正在更改foreach内部的集合-这是一个问题。。。还有别的办法吗? (我将每个时间状态设置为“已删除”) 也许试试。。。在myAssignemnt.ActivityInAssignments.ToList()中,您能否解释为什么它与ToList()一起工作而不是与原始集合一起工作?(I)尽管问题出在foreach函数中,而不在ActivityInSignment集合中。问题出在

如果我想手动删除一个对象及其所有子对象, 我如何做(我不想使用级联删除)

当我尝试迭代子列表时-我得到一个异常,因为我正在更改foreach内部的集合-这是一个问题。。。还有别的办法吗? (我将每个时间状态设置为“已删除”)


也许试试
。。。在myAssignemnt.ActivityInAssignments.ToList()

中,您能否解释为什么它与ToList()一起工作而不是与原始集合一起工作?(I)尽管问题出在foreach函数中,而不在ActivityInSignment集合中。问题出在集合中,它会对被“删除”的项作出反应,从而使foreach无效。ToList复制引用,并且该副本不受更改的影响。
var myAssignemnt = (from s in context.Assignments.Include("ActivityInAssignments").Where(s => s.AssignmentID == AssignmentID) select s).FirstOrDefault();

foreach (ActivityInAssignment acc in myAssignemnt.ActivityInAssignments)
{
  context.ObjectStateManager.ChangeObjectState(acc, System.Data.EntityState.Deleted);
}
context.ObjectStateManager.ChangeObjectState(myAssignemnt, System.Data.EntityState.Deleted);
context.SaveChanges();