Sie sollten versuchen, die DB-Timestamp/Rowversion-Funktion zu verwenden. In EF deklarieren Sie ein ByteArray und benennen es als Parallelitätsprüfungsfeld. DB legt den Wert bei der Erstellung fest. Alle nachfolgenden Aktualisierungen können den Wert „hasnt modifyedDB aktualisiert rowversion“ entsprechend überprüfen. Dieser Ansatz funktioniert auf SQL Server. Auf MYSql sollte es sich genauso verhalten.
public abstract class BaseObject {
[Key]
[Required]
public virtual int Id { set; get; }
[ConcurrencyCheck()]
public virtual byte[] RowVersion { get; set; }
}
oder über fließend, wenn Sie möchten// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
Dokumentation zum optimistischen Parallelitätsmuster