Come implementa Entity Framework la mappatura delle classi ereditarie di C# nella struttura delle tabelle del database?
sobes.tech AI
Risposta dell'AI
Entity Framework supporta diverse strategie di mappatura dell'ereditarietà delle classi C# in tabelle di database:
-
Table Per Hierarchy (TPH) — tutte le classi e le loro proprietà sono memorizzate in una singola tabella con una colonna discriminatore aggiuntiva che indica il tipo di oggetto.
-
Table Per Type (TPT) — per ogni classe viene creata una tabella separata, dove le tabelle degli eredi contengono solo campi aggiuntivi, e la relazione con la classe base avviene tramite una chiave esterna.
-
Table Per Concrete Class (TPC) — per ogni classe concreta viene creata una tabella separata contenente tutti i campi, inclusi quelli ereditati.
Esempio 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; } }
// Nel database ci sarà una tabella chiamata Animals con colonne Id, Name, Lives, Breed e Discriminator
La scelta della strategia dipende dai requisiti di prestazioni e dalla struttura dei dati.