我不确定这是否可以在EF,但我正在创建一堆类,我正在尝试让EF为我创建表。
现在,EF除了一个小问题外,还能很好地创建我的表格。它创建了表格:
人 - PersonId(PK)
富 - PersonId(PK) - FooId(INT)
浦 - PersonId(PK) - PooId(INT)
理想情况下,我希望表Foo和Poo中的PersonId不是主键而是外键。这可能吗?尝试使用模型构建器通过以下方式执行此操作:
modelBuilder.Entity<Foo>().HasKey(x => x.FooId).ToTable("Foo");
public class Person
{
public int PersonId { get; private set; }
}
public class Foo : Person
{
public int FooId { get; private set; }
}
public class Poo : Person
{
public int PooId { get; private set; }
}
答案 0 :(得分:2)
您实现继承的方式遵循每种类型的方法,其中基类的PK是派生类的PK 以及 FK返回基础类。
您需要PersonId in tables Foo and Poo to be a foreign key not as the primary key
,因此请将配置更改为
modelBuilder.Entity<Foo>().HasKey(x => x.FooId).ToTable("Foo");
到
modelBuilder.Entity<Foo>().ToTable("Foo");
您的数据库应如下所示:
人 - PersonId(PK)
Foo - PersonId(PK,FK)
Poo - PersonId(PK,FK)