EF 数据版本号,处理具体使用方法 RowVersion / Timestamp 使用方法。进行自动处理并发修改...

        /*
         * <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" } })

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值