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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку