我在服务和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; }
}
如果我删除了我的服务,我试图在表Lexikon中自动删除数据但不幸的是我不确定如何执行此操作,因为我是EF的新手。
我在dbContext中尝试了这段代码:
modelBuilder.Entity<SoftwareService>()
.HasOne(l => l.Lexikon)
.WithOne(s => s.SoftwareService)
.HasForeignKey<SoftwareService>(l => l.LexikonID)
.OnDelete(DeleteBehavior.Cascade);
但是当我删除我的服务时,表Lexikon中的数据仍将存在。另一方面,当我删除lexikon时,它会自动删除该服务,这很好但我也希望它在我删除我的服务时发生在我的Lexikon上。
不幸的是,我不熟悉OnDelete-Method,所以我希望有人可以帮助我。
答案 0 :(得分:1)
您是否从模型中生成了数据库?您必须,因为EF生成ON DELETE CASCADE约束。否则,您需要手动添加它。我为EF pre-Core写了一篇关于这个问题的帖子,但它仍然适用:https://weblogs.asp.net/ricardoperes/entity-framework-pitfalls-cascade-deletes。
答案 1 :(得分:0)
这个方向不可能,只有从校长到孩子