DBタイムスタンプ/行バージョン機能を使用する必要があります。EFでは、ByteArrayを宣言し、それを同時実行性チェックフィールドとして指定します。DBは作成時に値を設定します。以降のすべての更新では、値hasntchangedDBが必要に応じてrowversionを更新するかどうかを確認できます。このアプローチはSQLサーバーで機能します。MYSqlでも同じように動作するはずです。
public abstract class BaseObject {
[Key]
[Required]
public virtual int Id { set; get; }
[ConcurrencyCheck()]
public virtual byte[] RowVersion { get; set; }
}
または、必要に応じて流暢に// 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(); //<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<