2

我不确定这在 EF 中是否可行,但我正在创建一堆类并试图让 EF 为我创建表。

现在 EF 可以很好地创建我的表,除了一个小问题。它将表创建为:

人员 - PersonId (PK)

Foo - PersonId (PK) - FooId (INT)

Poo - PersonId (PK) - PooId (INT)

理想情况下,我希望表 Foo 和 Poo 中的 PersonId 是外键,而不是主键。这可能吗?尝试使用 ModelBuilder 通过以下方式执行此操作:

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; }
}
4

1 回答 1

3

您实现继承的方式遵循每个类型方法的表,其中基类的 PK 是派生类的 PK,也是返回基类的 FK。

你想要PersonId in tables Foo and Poo to be a foreign key not as the primary key,所以通过将你的配置更改为 from

modelBuilder.Entity<Foo>().HasKey(x => x.FooId).ToTable("Foo");

modelBuilder.Entity<Foo>().ToTable("Foo");

您的数据库应如下所示:

人员 - PersonId (PK)

Foo - PersonId (PK, FK)

便便 - PersonId (PK, FK)

更多关于每个类型继承表的阅读

于 2013-05-16T11:11:47.073 回答