/* * <div class="form-group"> // 原始 * <div class="form-group hidden"> // 修改后 * * * 原始: @Html.EditorFor(model => model.RowVersion, new { htmlAttributes = new { @class = "form-control" } }) * 修改后:@Html.HiddenFor(model => model.RowVersion, new { htmlAttributes = new { @class = "form-control" } }) */
生成的页面,进行替换操作。同样适用于 Timestamp
/// <summary> /// 数据行版本号 /// </summary> [Display(Name ="数据行版本号")] [Timestamp] public byte[] RowVersion { get; set; }
或
/// <summary> /// 数据行版本号 /// </summary> [Display(Name ="数据行版本号")] [Timestamp] public byte[] Timestamp { get; set; }
如果发生异常,表示版本不一至。
如:
#region 修改数据时,如果行版本不一至,则报错,内容为:数据版本不一至,请返回重新进入再修改! private static readonly Exception _DbUpdateConcurrencyException = new Exception("数据版本不一至,请返回重新进入再修改!"); /// <summary> /// 修改数据时,如果行版本不一至,则报错,内容为:数据版本不一至,请返回重新进入再修改! /// </summary> public static Exception DbUpdateConcurrencyException { get { return _DbUpdateConcurrencyException; } } private static readonly Exception _OptimisticConcurrencyException = new Exception("未设置行版本!"); /// <summary> /// 未设置行版本!当更新操作违反并发约束时,就会引发此异常。 /// </summary> public static Exception OptimisticConcurrencyException { get { return _OptimisticConcurrencyException; } } #endregion public override async Task<int> SaveChangesAsync() { try { int result = await base.SaveChangesAsync(); return result; } catch (DbUpdateConcurrencyException) { throw RowVersionHelper.DbUpdateConcurrencyException; } catch (OptimisticConcurrencyException) { throw RowVersionHelper.OptimisticConcurrencyException; } }
可以处理这个异常,进行自定义处理以给用户弹出友好提示。
<div class="form-group"> // 原始
<div class="form-group hidden"> // 修改后
原始: @Html.EditorFor(model => model.RowVersion, new { htmlAttributes = new { @class = "form-control" } })
修改后:@Html.HiddenFor(model => model.RowVersion, new { htmlAttributes = new { @class = "form-control" } })