在我的每个 POCO 的构造函数中,我都有这个:
this.StartTracking();
确保为我的一个 POCO 的每个实例打开跟踪。我有一个实体 A,其中包含实体 B 的 TrackableCollection。当我像这样加载我的实体 A 实例时:
using(MyContext ctx = new MyContext())
{
entityA = ctx.EntityA.Include("EntityB").Where(x => x.Id== id).FirstOrDefault();
}
查看实体 A 上的 ObjectsAddedToCollection 属性,有 1 个对象标记为“未更改”。当我执行 entityA.EntityB[0].MarkAsDeleted() 时,状态不会设置为“已删除”并移至 ObjectsRemovedFromCollection 集合。它只是被完全删除。我仔细检查了一下,实体 A 和实体 B 的 ChangeTrackingEnabled 都设置为 True。是否有原因导致这不起作用?因此,我无法删除子实体并将更改保存到数据库中。