Junior — Middle
Jak Entity Framework implementuje mapování děděných tříd C# do struktury tabulek databáze?
sobes.tech AI
Odpověď od AI
Entity Framework podporuje několik strategií mapování dědičnosti tříd C# do tabulek databáze:
-
Table Per Hierarchy (TPH) — všechny třídy a jejich vlastnosti jsou uloženy v jedné tabulce s přídavnou diskriminační sloupcem, který udává typ objektu.
-
Table Per Type (TPT) — pro každou třídu je vytvořena samostatná tabulka, kde tabulky potomků obsahují pouze dodatečná pole, a vztah s základní třídou je realizován přes cizí klíč.
-
Table Per Concrete Class (TPC) — pro každou konkrétní třídu je vytvořena samostatná tabulka obsahující všechna pole, včetně zděděných.
Příklad 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; } }
// V databázi bude jedna tabulka Animals s sloupci Id, Name, Lives, Breed a Discriminator
Volba strategie závisí na požadavcích na výkon a struktuře dat.