Debería intentar usar la función DB Timestamp / Rowversion. En EF, declara un ByteArray y lo nomina como el campo de verificación de concurrencia. DB establece el valor en la creación. Todas las actualizaciones posteriores pueden comprobar que el valor no ha cambiado. La base de datos actualiza la versión de la fila según corresponda. Este enfoque funciona en el servidor SQL. Debería comportarse de la misma manera en MYSql.
public abstract class BaseObject {
[Key]
[Required]
public virtual int Id { set; get; }
[ConcurrencyCheck()]
public virtual byte[] RowVersion { get; set; }
}
o a través de fluidez si lo desea// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Documento sobre el patrón de concurrencia optimista