Entity framework core 实体类型“Child”需要定义主键

Entity framework core 实体类型“Child”需要定义主键,entity-framework-core,Entity Framework Core,使用Entity Framework Core 2,我拥有以下实体: public class Parent { public Int32 Id { get; set; } public virtual Child Child { get; set; } } public class Child { public Int32 ParentId { get; set; } public virtual Parent Parent { get; set; } } 我希望父母和孩子

使用Entity Framework Core 2,我拥有以下实体:

public class Parent {
  public Int32 Id { get; set; }
  public virtual Child Child { get; set; }
}

public class Child {
  public Int32 ParentId { get; set; }
  public virtual Parent Parent { get; set; }
}
我希望父母和孩子有一对一的关系

我希望ParentId是实体子对象的FK和PK

因此,我尝试了以下配置:

builder.Entity<Parent>().ToTable("Parents");
builder.Entity<Parent>().Property(y => y.Id).UseSqlServerIdentityColumn();    

builder.Entity<Child>().ToTable("Childs");
builder.Entity<Child>().HasOne(x => x.Parent)
                       .WithOne(x => x.Child)
                       .HasForeignKey<Child>(x => x.ParentId);

你知道如何解决这个问题吗?

这个问题与人际关系没有任何共同之处

简单地说,ParentId与不匹配,因此需要使用数据注释指定

public class Child
{
    [Key]
    public Int32 ParentId { get; set; }
    public virtual Parent Parent { get; set; }
}
或流畅的API

builder.Entity<Child>().HasKey(x => x.ParentId);

与往常一样,当PK名称与约定不匹配时-builder.Entity.HasKeyx=>x.ParentId;。我以前试过,但我一直都犯同样的错误……再试一次?:应该有用。没有它就无法工作。是的,毕竟它是有效的。我缺少向模型中添加一个实体。你可以添加你的答案,这样我就可以标记它了?
builder.Entity<Child>().HasKey(x => x.ParentId);