La convenzione di mapping di Entity Framework Core mappa automaticamente tutte le proprietà pubbliche con getter e setter verso le colonne con lo stesso nome. Questa convenzione è molto comoda poiché ci permette di mappare gran parte delle nostre entity senza dover scrivere una linea di codice.
Tuttavia esistono casi in cui vogliamo creare proprietà che siano internal (ad esempio la proprietà Password di una entity Utente). Queste proprietà non sono mappate in automatico quindi dobbiamoricordarci di eseguire il mapping in automatico.
public class User { public string Username { get; set; } public string Name { get; set; } internal string Password { get; set; } } internal class BNContext : DbContext { public DbSet<User> Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<User>().Property(p => p.Password); } }
Come si può vedere dall'esempio, il codice per mappare la proprietà internal è lo stesso per una proprietà pubblica. Tuttavia, mappare la proprietà internal è importante per due motivi: il primo è che Entity Framework Core non considera la proprietà per le operazioni di scrittura dati (non include la proprietà nelle insert e nelle update); il secondo è che se usiamo la proprietà nelle query, non otteniamo né un errore, né una valutazione in locale, semplicemente tutto ciò che fa riferimento alla poprietà viene ignorato.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare lo stream della risposta in ASP.NET Core tramite IAsyncEnumerable
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Gestire liste di tipi semplici con Entity Framework Core
Utilizzare la versione generica di EntityTypeConfiguration in Entity Framework Core
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Usare le collection expression per inizializzare una lista di oggetti in C#
Limitare le richieste lato server con l'interactive routing di Blazor 8
Verificare la provenienza di un commit tramite le GitHub Actions
Creare alias per tipi generici e tuple in C#
Configurare policy CORS in Azure Container Apps
Utilizzare l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Autenticarsi in modo sicuro su Azure tramite GitHub Actions