我有两个实体员工经理,并且我正在使用 ef core 5。
public class Employee
{
public long Id{ get; private set; }
public string FirstName { get; private set; }
public string LastName { get; private set; }
}
public class Manager : Employee
{
public long StoreId{ get; private set; }
}
我使用每个表的类型,使用 Fluent api
class EmployeeConfiguration : IEntityTypeConfiguration<Employee>
{
public void Configure(EntityTypeBuilder<Employee> builder)
{
builder.ToTable("Employee");
builder.HasKey(x => x.Id);
}
}
class ManagerConfiguration : IEntityTypeConfiguration<Manager>
{
public void Configure(EntityTypeBuilder<Manager> builder)
{
builder.ToTable("Manager");
}
}
结果我有两个表。问题是,我想要级联删除行为,当我删除员工时,我想删除经理表的记录。 但默认行为不是这样的。当我尝试删除父记录时,我遇到了 fk 违规
如何在每种类型的情况下在表中配置 OnDelete?
编辑 EF core理解与迁移后生成的关系
b.HasOne(".......Employee", null)
.WithOne()
.HasForeignKey("....Manager", "Id")
.OnDelete(DeleteBehavior.ClientCascade)
.IsRequired();
最佳答案
我知道这已经很旧了。但我是这样做的,以防有人看到。
modelBuilder.Entity<Manager>(entity =>
{
entity.ToTable("Manager")
.HasOne<Employee>()
.WithOne()
.HasForeignKey<Manager>(x => x.Id)
.OnDelete(DeleteBehavior.Cascade);
});
关于c# - 每个类型表中的级联删除 (TPT) EF Core 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67010304/