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; }
}
さんのコメント: さんのコメント: