Powinieneś spróbować użyć funkcji DB Timestamp / Rowversion.W EF deklarujesz ByteArray i wyznaczasz ją jako pole sprawdzania współbieżności.DB ustawia wartość podczas tworzenia. Wszystkie kolejne aktualizacje mogą sprawdzać, czy wartość hasnt changedDB aktualizuje wersję rowversion odpowiednio. Takie podejście działa na serwerze SQL. Powinien zachowywać się tak samo na MYSql.
public abstract class BaseObject {
[Key]
[Required]
public virtual int Id { set; get; }
[ConcurrencyCheck()]
public virtual byte[] RowVersion { get; set; }
}
lub biegle, jeśli chcesz// Klucz podstawowythis.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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dokument dotyczący optymistycznego wzorca współbieżności