2013年10月19日土曜日

【Entity Framework】同時実行制御(楽観ロック)を行う (Edit画面にhiddenを追加する)

Entity Framework で同時実行制御を行うにはTimestamp属性をつけるだけでEFが勝手にやってくれます。
(Timestamp属性をつけておけば、ConcurrencyCheckはいらない・・・たぶん)

HogeEntity.cs
public class HogeEntity
    {
        public int HogeEntityId { get; set; }
        public string Name { get; set; }
        public string Value { get; set; }

        [Timestamp]
        [ConcurrencyCheck]
        public byte[] Timestamp { get; set; }
    }


Scaffoldingでコントローラーとビューを作った時はEdit画面にHiddenフィールドを追加してあげないとエラーになります。

Edit.cshtml
@Html.HiddenFor(model => model.Timestamp)