Sobes.tech
Junior — Middle

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:

  1. 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.

  2. 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.

  3. 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.