Měli byste se snažit použít funkci DB Timestamp / Rowversion. V EF deklarujete ByteArray a nominujete jej jako pole kontroly souběžnosti. DB nastavuje hodnotu při vytvoření. Všechny následující aktualizace mohou zkontrolovat hodnotu hasnt changedDB aktualizuje rowversion podle potřeby. Tento přístup funguje na SQL serveru. Stejně by se měl chovat i na MYSql.
public abstract class BaseObject {
[Key]
[Required]
public virtual int Id { set; get; }
[ConcurrencyCheck()]
public virtual byte[] RowVersion { get; set; }
}
nebo plynule, pokud chcete// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dokument o optimistickém vzoru souběžnosti