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
Gestione dell'annidamento delle regole dei layer in CSS
Miglioramenti agli screen reader e al contrasto in Angular
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Recuperare l'ultima versione di una release di GitHub
Miglioramenti nelle performance di Angular 16
Eseguire i worklow di GitHub su runner potenziati
Eseguire le GitHub Actions offline
Supportare il sorting di dati tabellari in Blazor con QuickGrid
Aggiungere interattività lato server in Blazor 8
Sviluppare un'interfaccia utente in React con Tailwind CSS e Preline UI
Utilizzare EF.Constant per evitare la parametrizzazione di query SQL
Gestione degli stili CSS con le regole @layer