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
Gestire codice JavaScript con code splitting e lazy loading
Utilizzare DeepSeek R1 con Azure AI
Utilizzare una qualunque lista per i parametri di tipo params in C#
Centralizzare gli endpoint AI Foundry con Azure API Management
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Gestione dell'annidamento delle regole dei layer in CSS
Utilizzare i variable font nel CSS
Creare una libreria CSS universale: Cards
Gestire il routing HTTP in Azure Container App
Rendere le variabili read-only in una pipeline di Azure DevOps
Ridurre il reflow cambiando il CSS
Change tracking e composition in Entity Framework