使用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.
知道如何解决这个问题吗?
答案 0 :(得分:1)
这个问题与人际关系没有任何共同之处。
简单ParentId
与key 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);