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
Utilizzare Model as a Service su Microsoft Azure
Usare lo spread operator con i collection initializer in C#
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Creare moduli CSS in React
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Trasformare qualsiasi backend in un servizio GraphQL con Azure API Management
Load test di ASP.NET Core con k6
Eseguire attività con Azure Container Jobs
Gestire liste di tipi semplici con Entity Framework Core
Semplificare il deployment di siti statici con Azure Static Web App
Sfruttare lo streaming di una chiamata Http da Blazor
I più letti di oggi
- Utilizzare WebAssembly con .NET, ovunque
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Paginare i risultati con QuickGrid in Blazor
- Ottimizzazione dei block template in Angular 17