我将 EF 与代码优先和 TPT(每种类型的表)继承一起使用。我有以下模型:
public partial class AccountHolder
{
public int AccountHolderId { get; set; }
public virtual Address Detail { get; set; }
public virtual Nominee Nominee { get; set; }
}
public partial class Nominee
{
public int NomineeId { get; set; }
}
public abstract class Address
{
public int AddressId { get; set; }
...
}
public class PersonalDetail : Address
{
public int PersonalDetailId { get; set; }
...
}
流利的API:
modelBuilder.Entity<AccountHolder>().HasOptional(p => p.Nominee)
.WithRequired()
.WillCascadeOnDelete();
根据本教程,这里是 AccountHolder 和 Address 之间的多态关系。PersonalDetail 继承地址。我的问题是,每当我删除任何我想要的 AccountHolder 时,EF 都会负责从 Address 和 PersonalDetail 表中删除其关联的 PersonalDetail 信息,但目前这并没有发生,任何人都可以指导我如何通过 Fluent API 或其他方式实现此行为方法 ?
编辑:
根据我使用此配置时发布的答案:
modelBuilder.Entity<AccountHolder>().HasOptional(p => p.Detail)
.WithRequired()
.WillCascadeOnDelete();
用于启用级联删除,这与 AccountHolder 和 Nominee 之间现有的 1 对 1 关联冲突。例外是:
检测到有冲突的更改。当尝试插入具有相同键的多个实体时,可能会发生这种情况。