Mappare una proprietà internal di una entity in Entity Framework Core

di Stefano Mostarda, in LINQ, Entity Framework,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti

I più letti di oggi