Entity framework core 自动创建外键

Entity framework core 自动创建外键,entity-framework-core,Entity Framework Core,我正在使用Sql server数据库开发ASP.Net核心框架3.1 以下是我创建的两个模型: public class Parent { public int parent_id { get; set; } public string name { get; set; } public List<Child> Childs { get; set; } } public class Child { public int child_id { get

我正在使用Sql server数据库开发ASP.Net核心框架3.1

以下是我创建的两个模型:

public class Parent
{
    public int parent_id { get; set; }
    public string name { get; set; }

    public List<Child> Childs { get; set; }
}

public class Child
{
    public int child_id { get; set; }
    public string name { get; set; }

    public int parent_id { get; set; }
    public Parent Parent { get; set; }
}
很好,一切正常。 外键已在sql server数据库中创建

我读过一本书,说我应该在dbcontext文件中添加以下内容:

    public DbSet<Parent> Parents { get; set; }
    public DbSet<Child> Childs { get; set; }
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Child>()
            .HasOne(p => p.Parent)
            .WithMany(b => b.Childs);
    }
模型创建时受保护的覆盖无效(ModelBuilder ModelBuilder)
    {
modelBuilder.Entity()
.HasOne(p=>p.Parent)
.有很多(b=>b.孩子);
    }
这条线的目标是什么?有必要吗


谢谢

这本书没有解释吗?没有,这就是为什么我想知道这几行是必要的还是不是某本书。试着看看如果删除这些行,数据模型会发生什么情况。这正是我所做的,这就是为什么我问这个问题的原因。问题是,您呈现的类模型没有有效的主键属性。这样使用时,EF会抱怨缺少主键。不管有没有这个映射代码,这个模型都不会工作,这是你没有意识到的,或者最好提一下。如果密钥映射正确,则显示的映射将不足以满足要求,因此无法回答您的问题。
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Child>()
            .HasOne(p => p.Parent)
            .WithMany(b => b.Childs);
    }