Sobes.tech
Junior — Middle

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

sobes.tech AI

Отговор от 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 class Cat : Animal { public int Lives { get; set; } } public class Dog : Animal { public string Breed { get; set; } }

// В базата данни ще има една таблица Animals с колони Id, Name, Lives, Breed и Discriminator

Изборът на стратегия зависи от изискванията за производителност и структурата на данните.