Entity framework core 实体类型“Child”需要定义主键
使用Entity Framework Core 2,我拥有以下实体: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; } } 我希望父母和孩子
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);