1
检查这些SO文章后:cascade-delete-in-entity-framework,ef6-1-soft-delete-with-cascade-delete,cascading-soft-delete,method-for-cascading-soft-deletes-in-parent-child-relationships和reasons-for-cascading-soft-deletes,而不是寻找解决办法...如何级联SoftDelete?
我SoftDelete工作我的实体模型。我在我的上下文覆盖SaveChanges()
:
public override int SaveChanges()
{
ChangeTracker.DetectChanges();
foreach (DbEntityEntry<ISoftDeletable> entity in ChangeTracker.Entries<ISoftDeletable>())
{
if (entity.State == EntityState.Deleted)
{
entity.State = EntityState.Modified;
entity.Entity.IsDeleted = true;
}
}
return base.SaveChanges();
}
我已经设置CascadeOnDelete我的子实体。因为我覆盖已删除的EntityState
它不会级联。有谁知道只有导航属性放在foreach
循环中的方法吗?或者更好的方式来处理SoftDeletes?
谢谢你在前进,
我看到[此链接](http://stackoverflow.com/a/13308176/261050)在这个SO页面的权利。 – Maarten
@Maarten我看到了,但触发器无法检查记录是否继承了ISoftDeletable。 – Randy
根据ISoftDeletable的存在,您可以在迁移代码中向数据库添加触发器。 – Maarten