【问题标题】:Manually delete object tree in entity-Framework手动删除实体框架中的对象树
【发布时间】:2011-01-30 02:56:25
【问题描述】:

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

当我尝试遍历子列表时 - 我得到一个异常,因为我正在更改 foreach 中的集合 - 这是一个问题......还有其他方法吗? (我将每个时间状态设置为已删除)。

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();

【问题讨论】:

    标签: entity-framework-4


    【解决方案1】:

    不妨试试... in myAssignemnt.ActivityInAssignments.ToList()

    【讨论】:

    • 你能解释一下为什么它适用于 ToList() 而不是原始集合吗? (我虽然问题出在 foreach 函数中,而不是在 ActivityInAssignment 集合中。
    • 问题出在集合中,它对被“删除”的项目做出反应,并使 foreach 无效。 ToList 制作引用的副本,并且该副本不受更改的影响。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2011-10-05
    相关资源
    最近更新 更多