Dovresti provare a utilizzare la funzione DB Timestamp / Rowversion. In EF dichiari un ByteArray e lo nomini come campo di controllo della concorrenza. DB imposta il valore alla creazione. Tutti gli aggiornamenti successivi possono verificare che il valore non sia stato modificato. Questo approccio funziona su SQL Server. Dovrebbe comportarsi allo stesso modo su MYSql.
public abstract class BaseObject {
[Key]
[Required]
public virtual int Id { set; get; }
[ConcurrencyCheck()]
public virtual byte[] RowVersion { get; set; }
}
o tramite fluente se ti piace// Primary Keythis.HasKey(t => t.Id);
// Properties
//Id is an int allocated by DB , with string keys, no db generation now
this.Property(t => t.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); // default to db generated
this.Property(t => t.RowVersion)
.IsRequired()
.IsFixedLength()
.HasMaxLength(8)
.IsRowVersion(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Docu sul modello di concorrenza ottimistica