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
Ottimizzare le performance usando Span<T> e il metodo Split
Rinnovare il token di una GitHub App durante l'esecuzione di un workflow
Garantire la provenienza e l'integrità degli artefatti prodotti su GitHub
Recuperare automaticamente un utente e aggiungerlo ad un gruppo di Azure DevOps
Generare velocemente pagine CRUD in Blazor con QuickGrid
Gestire gli accessi con Token su Azure Container Registry
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Gestire il colore CSS con HWB
Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
Gestione dei nomi con le regole @layer in CSS
Generare una User Delegation SAS in .NET per Azure Blob Storage
Recuperare App Service cancellati su Azure
I più letti di oggi
- Autenticazione di git tramite Microsoft Entra ID in Azure DevOps
- Repaint, Reflow e Compositing: Come Funziona il Rendering nel Browser
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- Disabilitare le run concorrenti di una pipeline di Azure DevOps
- Chiamare direttamente un numero di telefono con HTML5