U zou moeten proberen de DB Timestamp / Rowversion-functie te gebruiken. In EF declareert u een ByteArray en nomineert u deze als het veld Concurrency-controle. DB stelt de waarde in bij het maken. Alle volgende updates kunnen controleren of de waarde niet is gewijzigd. DB werkt rijversie bij, indien van toepassing. Deze aanpak werkt op SQL-server. Het zou zich op dezelfde manier moeten gedragen op MYSql.
public abstract class BaseObject {
[Key]
[Required]
public virtual int Id { set; get; }
[ConcurrencyCheck()]
public virtual byte[] RowVersion { get; set; }
}
of via vloeiend als je wilt// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Document over het optimistische gelijktijdigheidspatroon