Junior — Middle
W jaki sposób Entity Framework realizuje mapowanie dziedziczonych klas C# w strukturze tabel bazy danych?
sobes.tech AI
Odpowiedź od AI
Entity Framework obsługuje kilka strategii mapowania dziedziczenia klas C# do tabel bazy danych:
-
Table Per Hierarchy (TPH) — wszystkie klasy i ich właściwości są przechowywane w jednej tabeli z dodatkową kolumną discriminatora, która wskazuje typ obiektu.
-
Table Per Type (TPT) — dla każdej klasy tworzona jest osobna tabela, gdzie tabele dziedziczące zawierają tylko dodatkowe pola, a relacja z klasą bazową jest realizowana przez klucz obcy.
-
Table Per Concrete Class (TPC) — dla każdej konkretnej klasy tworzona jest osobna tabela zawierająca wszystkie pola, w tym odziedziczone.
Przykład 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; } }
// W bazie danych będzie jedna tabela Animals z kolumnami Id, Name, Lives, Breed i Discriminator
Wybór strategii zależy od wymagań dotyczących wydajności i struktury danych.