Nello script #479 abbiamo visto come configurare un value converter già esistente in Entity Framework Core per convertire un enum in una stringa e viceversa durante il colloquio con il database. L'utilizzo del value converter è molto comodo quando dobiamo riusarlo in più parti del codice. Se invece dobbiamo effettuare una conversione semplice e in un solo punto, possiamo anche dichiarare come deve essere fatta la converione direttamente durante la fase di mapping della proprietà.
La conversione viene configurata tramite il metodo HasConversion al quale passiamo in input due lambda che rispettivamente specificano la conversione tra il valore della proprietà del db e viceversa.
protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder .Entity<Person>() .Property(e => e.Gender) .HasConversion( v => v.ToString(), v => (Gender)Enum.Parse(typeof(Gender), v)); }
In questo esempio, il campo Gender viene convertito in una stringa quando viene salvato sul database e viene poi riconvertito in un enum, partendo dal valore della stringa salvata in precedenza, quando viene letto dal database.
Come si intuisce da questo codice, l'utilizzo di un value converter inline è scuramente semplice, ma è quasi sempre preferibile crearne uno riutilizzabile.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Generare HTML a runtime a partire da un componente Razor in ASP.NET Core
Collegare applicazioni server e client con .NET Aspire
Gestione degli eventi nei Web component HTML
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Generare una User Delegation SAS in .NET per Azure Blob Storage
Supportare la sessione affinity di Azure App Service con Application Gateway
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Effettuare il refresh dei dati di una QuickGrid di Blazor
Testare l'invio dei messaggi con Event Hubs Data Explorer
Configurare il nome della run di un workflow di GitHub in base al contesto di esecuzione
Rendere le variabili read-only in una pipeline di Azure DevOps
Utilizzare QuickGrid di Blazor con Entity Framework