Back to questions
Aston
Junior — Middle
68
Каким образом Entity Framework реализует отображение наследственных классов C# в структуре таблиц базы данных?
Companies where asked
Answer from AI
sobes.tech AI
Entity Framework поддерживает несколько стратегий отображения наследования классов C# в таблицы базы данных:
-
Table Per Hierarchy (TPH) — все классы и их свойства хранятся в одной таблице с дополнительным столбцом-дисриминатором, который указывает тип объекта.
-
Table Per Type (TPT) — для каждого класса создаётся отдельная таблица, где таблицы наследников содержат только дополнительные поля, а связь с базовым классом осуществляется через внешний ключ.
-
Table Per Concrete Class (TPC) — для каждого конкретного класса создаётся отдельная таблица, содержащая все поля, включая унаследованные.
Пример TPH:
public abstract class Animal { public int Id { get; set; } public string Name { get; set; } }
public class Cat : Animal { public int Lives { get; set; } }
public class Dog : Animal { public string Breed { get; set; } }
// В базе будет одна таблица Animals с колонками Id, Name, Lives, Breed и Discriminator
Выбор стратегии зависит от требований к производительности и структуре данных.