![](/img/trans.png)
[英]Soft delete on Parent Entity but Hard delete on Child/Relationship EF Core
[英]Delete parent if no children in EF Core 7
使用 EF Core 7 和 .NET 7(但在以前的版本中也是如此),可以通過在OnModelCreating
- 方法中配置父實體的刪除行為來刪除 SQL 服務器數據庫中一對多關系的所有子項class 派生自DbContext
類,如下所示:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder
.Entity<Department>()
.HasMany(d => d.Employees)
.WithOne(e => e.Department)
.OnDelete(DeleteBehavior.Cascade)
}
}
但是,如果所有子實體都被刪除,我想刪除父實體怎么辦?
我已經嘗試從上面的模式映射一個反向刪除模式(見下文),但沒有成功。
modelBuilder.Entity<Employee>()
.HasOne(e => e.Department)
.WithMany(d => d.Employees)
.OnDelete(DeleteBehavior.Cascade);
ORM 引擎的靈感來自關系數據庫管理系統。 在刪除最后一個子項時刪除父項不是數據庫引擎中關系更改的標准操作。 所以 EFCore 不支持它。 在數據庫級別,您可以使用觸發器來實現您想要的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.