Я не уверен, возможно ли это в EF, но я создаю кучу классов и пытаюсь получить EF для создания таблиц для меня.Наследование EF и первичные ключи
Теперь EF создает мои таблицы в порядке, за исключением незначительной проблемы. Он создал таблицы, как:
Person - PersonId (PK)
Foo - PersonId (PK) - FooId (INT)
Poo - PersonId (PK) - PooId (INT)
В идеале, я хочу, чтобы PersonId в таблицах Foo и Poo был внешним ключом не как первичный ключ. Это возможно? Пробовал с помощью 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; }
}
Возможно ли, чтобы PersonId был только FK и чтобы FooId в таблице Foo был PK? –
Да, это возможно. Но в этом случае вы должны создать базу данных вручную и сначала использовать код для привязки объектов к существующей базе данных. –
Я не был полностью уверен, что то, что вы хотели сделать, может быть сделано с использованием кода в первую очередь, и ответ Кирилла Бестемьянова подтверждает это. Посмотрите на эту ссылку, где Ладислав объясняет, как сопоставить TPT с помощью конструктора http://stackoverflow.com/questions/5439273/how-to-map-table-pertyty-tpt-inheritance-in-entity-designer/5443033# 5443033 – MattSull