Quando si gestisce la concorrenza ottimistica con SQL Server, il modo più semplice per creare la colonna con la versione è crearla di tipo Timestamp così che ad ogni aggiornamento sia SQL Server a cambiare la versione. Per default, la proprietà che mappa sul timestamp è di tipo byte[], ma questo comportamento non è sempre ottimale per due motivi. Il primo è che byte[] è un tipo mutabile, il secondo è che un byte[] serializzato è poco comprensibile all'occhio umano e quindi rende il debug più difficile a volte. Per questi motivi, è stata aggiunta la possibilità di mappare la colonna che fa da rowversion non solo con una proprietà di tipo byte[], ma anche di tipo long. Per fare questo, dobbiamo dichiarare la proprietà dell'entity come long o ulong e nel mapping specificare che il valore della proprietà viene generato convertendo da byte[].
public partial class Person { public int Id { get; set; } public string Name { get; set; } public long Timestamp { get; set; } } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Customers>(entity => { entity.Property(e => e.Timestamp) .IsRowVersion() .HasConversion<byte[]>() .IsConcurrencyToken(); }); }
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Aggiornare a .NET 9 su Azure App Service
Proteggere le risorse Azure con private link e private endpoints
Paginare i risultati con QuickGrid in Blazor
Definire stili a livello di libreria in Angular
Utilizzare l nesting nativo dei CSS
Assegnare un valore di default a un parametro di una lambda in C#
Le novità di Angular: i miglioramenti alla CLI
Eseguire query manipolando le liste contenute in un oggetto mappato verso una colonna JSON
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare Azure AI Studio per testare i modelli AI
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
I più letti di oggi
- Utilizzare il metodo IntersectBy per eseguire l'intersection di due liste
- Utilizzare StartsWith ed EndsWith con Span
- Utilizzare l nesting nativo dei CSS
- Microsoft lancia il nuovo tool gratuito 'ASP.NET Web Matrix Project'
- Managed deployment strategy in Azure DevOps
- Forzare l'apertura di un file fuori dal browser
- Configurare e gestire sidecar container in Azure App Service