Allo stato attuale (Versione 1.1) Entity Framework core supporta la possibilità di mappare sul database l'ereditarietà tra classi sfruttando il solo pattern Table Per Hierarchy (TPH). Questo pattern prevede che tutti i dati di tutte le classi facenti parti della gerarchia siano memorizzati in una sola tabella e che ci sia una colonna che agisce da discriminatore per specificare a quale classe si riferisce ogni riga del database.
Ad esempio, se abbiamo una classe Person e una classe Employee, le proprietà di queste classi staranno in una tabella chiamata People. Questa tabella conterra una colonna per ogni proprietà delle classi e una colonna Type che specifica se la riga contiene i dati di Person o Employee.
class MyContext : DbContext { public DbSet<Person> People { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Person>() .HasDiscriminator<string>("type") .HasValue<Person>("p") .HasValue<Employee>("e"); } } public class Person { public int Id { get; set; } public string Name { get; set; } } public class Employee : Person { public decimal Salary { get; set; } }
Entity Framework fa il detect in automatico della catena di ereditarietà. Con il metodo HasDiscriminator specifichiamo la colonna che agisce da discriminatore, con il metodo HasValue specifichiamo il valore da dare al discriminatore a seconda dell'oggetto che salviamo nella riga.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Applicare un filtro per recuperare alcune issue di GitHub
Ottenere un token di accesso per una GitHub App
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Ricevere notifiche sui test con Azure Load Testing
Gestire gli accessi con Token su Azure Container Registry
Utilizzare Azure Cosmos DB con i vettori
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Path addizionali per gli asset in ASP.NET Core MVC
Supportare la crittografia di ASP.NET Core con Azure Container App
Inference di dati strutturati da testo con Semantic Kernel e ASP.NET Core Web API
Migliorare la scalabilità delle Azure Function con il Flex Consumption