Sobes.tech
Back to questions
Junior — Middle
68

Каким образом Entity Framework реализует отображение наследственных классов C# в структуре таблиц базы данных?

Companies where asked
AstonAston

Answer from AI

sobes.tech AI

Entity Framework поддерживает несколько стратегий отображения наследования классов C# в таблицы базы данных:

  1. Table Per Hierarchy (TPH) — все классы и их свойства хранятся в одной таблице с дополнительным столбцом-дисриминатором, который указывает тип объекта.

  2. Table Per Type (TPT) — для каждого класса создаётся отдельная таблица, где таблицы наследников содержат только дополнительные поля, а связь с базовым классом осуществляется через внешний ключ.

  3. 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

Выбор стратегии зависит от требований к производительности и структуре данных.