Joe*_*man 6 c# entity-framework cascade one-to-one entity-framework-core
我在服务和 Lexikon 之间有一对一的关系,而服务有 Lexikon 的外键。我的服务不需要 Lexikon,因此我将 LexikonID 设置为可为空。但我的 Lexikon 仅当与服务相关时才能存在,因此我将导航属性设置为 [必需]。我使用的是 Code First,因此 EF 构建了我的数据库。
public class Service
{
public int ServiceID { get; set; }
//Foreignkey
public int? LexikonID { get; set; }
//Navigation Properties
public Lexikon Lexikon { get; set; }
}
public class Lexikon
{
public int LexikonID { get; set; }
//Navigation Properties
[Required]
public SoftwareService SoftwareService { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我删除我的服务,我会尝试自动删除 Lexikon 表中的数据,但不幸的是,我不知道如何执行此操作,因为我是 EF 新手。
我在 dbContext 中尝试了以下代码:
modelBuilder.Entity<SoftwareService>()
.HasOne(l => l.Lexikon)
.WithOne(s => s.SoftwareService)
.HasForeignKey<SoftwareService>(l => l.LexikonID)
.OnDelete(DeleteBehavior.Cascade);
Run Code Online (Sandbox Code Playgroud)
但是当我删除我的服务时,表 Lexikon 中的数据仍将在其中。另一方面,当我删除词典时,它会自动删除服务,这很好,但我也希望当我删除服务时,我的词典也会发生这种情况。
不幸的是我不熟悉 OnDelete-Method 所以我希望有人可以帮助我。
您是否从模型生成了数据库?您必须这样做,因为 EF 会生成 ON DELETE CASCADE 约束。否则,您将需要手动添加它。我针对 EF pre-Core 写了一篇关于这个问题的文章,但它仍然适用: https: //weblogs.asp.net/ricardoperes/entity-framework-pitfalls-cascade-deletes。
| 归档时间: |
|
| 查看次数: |
8061 次 |
| 最近记录: |