如果父实体不存在,EF Core 是否应该阻止我插入子实体?

问题描述 投票:0回答:1

我正在试验 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 之间的关系,但没有任何改变。

c# database entity-framework entity-framework-core
1个回答
0
投票

是的,这很正常,这是因为默认情况下 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);
}
© www.soinside.com 2019 - 2024. All rights reserved.