Molto spesso, nel nostro modello ci capita di avere una classe con una proprietà che rappresenta una lista di oggetti collegati. Per fare un esempio concreto, capita spesso di avere una classe Person con una lista di numeri di telefono collegati. Tipicamente, in casi come questi si crea una tabella per la classe person e una tabella per memorizzare gli indirizzi collegati alla persona.
Tuttavia, possiamo anche scegliere di persistere i numeri di telefono serializzandoli in JSON e memorizzandoli poi in una colonna della tabella mappata sulla classe Person. Supponiamo di avere la classe Person così dichiarata:
public class Person {
public int Id { get; set; }
public string Name { get; set; }
public List<string> Phones { get; set; }
}In questo caso, non possiamo mappare la proprietà Phones verso una tabella esterna in quanto è una lista di stringhe. Per persistere questo campo dobbiamo mapparlo verso una colonna della tabella PErson serializzandolo in JSON con il seguente mapping.
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>(entity =>
{
entity.Property(e => e.Phones)
.HasConversion(
value => JsonConvert.SerializeObject(value),
value => JsonConvert.DeserializeObject<T>(value)
);
}
}Il metodo HasConversion, applicato alla proprietà Phones, accetta due metodi. Il primo è quello che serializza il valore della proprietà (in formato JSON) in fase di salvataggio , il secondo è quello che prende il json dalla colonna e lo deserializza nell'oggetto .NET.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Gestione dei prompt file a livello di organizzazione aziendale in GitHub
Configuratione e utilizzo .NET Aspire CLI
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Come automatizzare il download dei report di billing da GitHub Enterprise
Utilizzare Hybrid Cache in .NET 9
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Abilitare il rolling update su Azure Functions flex consumption
Creare comandi nella dashboard .NET Aspire
Interagire con Azure DevOps tramite MCP Server
Eliminare record doppi in Sql Server
Utilizzare WebJobs su Linux con Azure App Service
Utilizzare Containers in .NET Aspire
I più letti di oggi
- Gli agenti AI sono uno dei temi più interessanti del momento, ma costruirli bene richiede molto più di un semplice prompt. In questa sessione parleremo di Azure AI Foundry con un taglio concreto, utile per capire come progettare agenti AI enterprise-grade, integrarli con tool e memoria, monitorarli e gestirne il deployment in modo efficace. Ci vediamo a Milano al Global Azure 2026 - ASPItalia.com, con Stefano Demiliani. #GlobalAzure #Azure #AzureAIFoundry #AI #AIAgents https://aspit.co/globalazure-26
- AKS non significa solo fare deploy. Significa anche gestire workload, operation, scalabilità e affidabilità nel modo giusto. In questa sessione parleremo di Azure Kubernetes Service con un taglio concreto, utile per chi vuole capire come portare Kubernetes in produzione senza complessità inutile. Ci vediamo a Milano per il Global Azure 2026 - ASPItalia.com, con Antonio Lamorte e Matteo Tumiati. #GlobalAzure #Azure #AKS #Kubernetes https://aspit.co/globalazure-26




