我正在试验 Entity Framework Core。我有两个型号
public class Child
{
public int Id { get; set; }
public string Name { get; set; }
public int ParentId { get; set; }
public Parent Parent { get; set; }
}
public class Parent
{
public int Id { get; set; }
public string Name { get; set; }
public List<Child> Childs { get; set; }
}
我正在像这样向空数据库添加新的 Child
dbContext.Add(new Child {Name = "name", ParentId = 42});
显然数据库中没有Id为42的Parent,但是存储了child。
Ef Core 让我用不存在的 ParentId 存储 Child 对象是正常行为吗?我可以配置 EF Core 来防止这种情况发生吗?
我尝试在 IEntityTypeConfiguration 中显式配置 Child 和 Parent 之间的关系,但没有任何改变。
是的,这很正常,这是因为默认情况下 EF Core 不会自动强制执行引用完整性。
你可以这样配置关系:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Child>()
.HasOne(c => c.Parent)
.WithMany(p => p.Childs)
.HasForeignKey(c => c.ParentId)
.OnDelete(DeleteBehavior.Restrict);
}