Я, вероятно, неправильно понимаю наследование таблицы в иерархии по коду, но это моя установка: у меня есть HTMLGadgets (и другие типы), наследуемые от Gadget, который наследуется от Entity.У сущности есть одно свойство, Id, поэтому я могу использовать его в универсальном репозитории, как этот учебник .
public abstract class Entity {
[Key]
public int Id { get; set; }
}
public abstract class Gadget : Entity {
public string Content { get; set; }
}
public class HTMLGadget : Gadget
{
public string SomeProperty { get; set;}
}
Для реализации наследования TPH у меня есть это в моем контексте:
public DbSet<Gadget> Gadgets { get; set; }
Итак, я хочу, чтобы все использовали базовый идентификатор, поэтому все является сущностью.Но как мне получить это для участия в первом наследовании кода?Я вижу проблему: если я изменю контекст на
public DbSet<Entity> Entities{ get; set; }
, это может сработать, но у меня будет все (будет больше таблиц, кроме гаджетов) в одной таблице иерархии!Но я не могу понять, как я могу получить классы EF POCO «снизу вверх» в гаджетах, но гаджеты по-прежнему используют базовое свойство Entity Id, чтобы их можно было использовать в общем репозитории.Кто-нибудь может помочь? -