Sin dall'introduzione del supporto a JSON, Entity Framework ha permesso di aggiornare i valori delle colonne che contengono oggetti JSON sfruttando SaveChanges(Async). Tuttavia, una cosa che non è stata supportata fino alla versione 9 è la possibilità di modificare il valore di una colonna JSON tramite il metodo ExecuteUpdate(Async).
A partire dalla versione 10, Entity Framework colma questo gap permettendoci di effettuare quindi aggiornamenti in bulk anche di colonne JSON tramite il seguente codice.
public class Person
{
public int Id { get; set; }
public PrimaryAddress Address { get; set; }
}
public class Address
{
public string Street { get; set; }
public string City { get; set; }
}
public class MyContext : DbContext
{
public DbSet<Person> People { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Person>().ComplexProperty(b => b.PrimaryAddress, bd => bd.ToJson());
}
}
public async Task Update()
{
await context.People.ExecuteUpdateAsync(s =>
s.SetProperty(b => b.PrimaryAddress.Street, b => b.PrimaryAddress.Street + "New"));
}Il codice del metodo Update genera ed esegue il seguente SQL.
UPDATE [p]
SET PrimaryAddress.modify('$.Street', JSON_VALUE(<strong>.[PrimaryAddress], '$.Street' + 'New')
FROM People AS [p]Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Centralizzare e governare MCP server e Skill con Azure API Center
Disabilitare la telemetria nella CLI di GitHub
Gestione ciclo di vita in .NET Aspire
Supporto nativo a JSON in SQL Server 2025
Stop alle password con Azure Managed Identity
Personalizzare i parametri del CSS Scroll Snap
Usare la libreria PredicateBuilder per eseguire query tramite Entity Framework che usano or su più campi
Utilizzare zizmor per rendere più sicuri i workflow di GitHub
Cache temporanea in Javascript con oggetti
Integrazione di Copilot in .NET Aspire
Utilizzare il Null conditional assignment di C# 14
Escludere alcuni file da GitHub Copilot


