Entity Framework Code First で Timestamp 以外で楽観的排他制御を行う場合、ConcurrencyCheck 属性で排他制御に使用するフィールドを指定します。
サンプルクラスを下のように記載します。 コメントにしている Timesamp で修飾された RowVersion フィールドはtimestampe(rowversion)型を使用する場合に指定する例です。ConcurrencyCheck で複数のフィールドを使用する場合は、複数のフィールドに対して ConcurrencyCheck アトリビュートを指定します。下記コードサンプルでは、 CreatedOn フィールドにコメントアウトした ConcurrencyCheck を指定しています。
/// <summary> /// サンプルテーブル /// </summary> public class Sample { [Key] public int ID { get; set; } public string Data { get; set; } // ConcurrencyCheckは複数指定できる // [ConcurrencyCheck] public DateTime CreatedOn { get; set; } [ConcurrencyCheck] public DateTime ModifiedOn { get; set; } // rowversion, timestamp型を使用する場合 //[Timestamp] //public byte[] RowVersion { get; set; } }
さんのコメント: さんのコメント: