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

时间:2018-03-23 17:07:31

标签: 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; }
}

我希望父母和孩子有一对一的关系。

我希望ParentId同时是实体Child的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);

但是我收到以下错误:

The entity type 'Child' requires a primary key to be defined.

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

1 个答案:

答案 0 :(得分:1)

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

简单ParentIdkey property name conventions不匹配,因此需要使用数据注释指定

public class Child
{
    [Key]
    public Int32 ParentId { get; set; }
    public virtual Parent Parent { get; set; }
}

或流畅的API

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