.net 自跟踪实体删除子实体

.net 自跟踪实体删除子实体,.net,entity-framework,self-tracking-entities,.net,Entity Framework,Self Tracking Entities,从STE中删除集合元素的正确方法是什么。目前我使用以下代码: order.Items[i].MarkAsDeleted(); order.Items.RemoveAt(i); 看起来它可以工作(尽管我已经从集合中删除了实体,但ApplyChanges还是删除了该实体)。但它看起来有点难看。我做得对吗?或者还有其他方法吗?本文直接取自: MarkAsDeleted方法会更改 要删除的实体的状态。这 方法还清除导航 正在创建的实体上的属性 标记为删除。导航 属性设置为空(如果为空) 指向参考对象。

从STE中删除集合元素的正确方法是什么。目前我使用以下代码:

order.Items[i].MarkAsDeleted();
order.Items.RemoveAt(i);

看起来它可以工作(尽管我已经从集合中删除了实体,但ApplyChanges还是删除了该实体)。但它看起来有点难看。我做得对吗?或者还有其他方法吗?

本文直接取自:

MarkAsDeleted方法会更改 要删除的实体的状态。这 方法还清除导航 正在创建的实体上的属性 标记为删除。导航 属性设置为空(如果为空) 指向参考对象。这个 如果 导航属性表示一个 收集删除标记时 对属于对象的一部分的对象调用 集合中删除该对象 收藏。在中标记每个对象 将集合标记为已删除 集合副本中的对象。 要获取收藏的副本, 调用ToArray()或ToList()方法 在集合上,如下所示 例如:

List courses=department.courses.ToList();
foreach(课程中的var c)
{
//将部门中的每门课程标记为已删除。
c、 MarkAsDeleted();
} 
因此,您并没有做错,因为一旦您将项目标记为已删除,它应该已经从
项目
集合中删除,因此删除索引中的项目很可能会删除与另一个项目的中断关系

List<Course> courses = department.Courses.ToList();
foreach (var c in courses)
{
    // Mark each course in the department as Deleted.
    c.MarkAsDeleted();
}