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