EF 数据版本号,处理具体使用方法 RowVersion / Timestamp 使用方法。进行自动处理并发修改
2017-11-29 11:39
681 查看
/* * <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" } })
相关文章推荐
- MySQL 实现 EF Code First TimeStamp/RowVersion 并发控制
- 在使用Linq的过程中,如果要进行数据的比较和处理,请记住使用ToList()方法。
- 使用“捕捉”地理处理工具进行数据的自动编辑
- 针对Mysql 使用EF Code First时 TimeStamp/RowVersion 类型 的解决办法
- 使用pandas对矢量化数据进行替换处理的方法
- 程序集版本最后一位使用SVN版本号的自动生成方法
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(10):服务器端和客户端数据类型的自动转换:以XML方式序列化数据、小结
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(6):服务器端和客户端数据类型的自动转换:复杂类型
- SQL SERVER2000教程-第五章 处理数据 第二十一节 使用CASE语句、SUM函数、AVG函数进行综合数据统计
- SQL SERVER2000教程-第五章 处理数据 第二十节 使用GOTO进行循环求和
- SQL SERVER2000教程-第五章 处理数据 第十九节 使用DECLARE 语句进行数据统计
- SQL SERVER2000教程-第五章 处理数据 第十六节 使用CHARINDEX函数代替Like进行数据查询
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 使用Transact-SQL进行数据导入导出方法详
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- SQL SERVER2000教程-第五章 处理数据 第十七节 使用CASE函数格式进行条件查询
- 如何使用DataBinder.Eval()方法进行数据绑定
- 使用ASP.NET AJAX异步调用Web Service和页面中的类方法(9):服务器端和客户端数据类型的自动转换:DataTable和DataSet
- 使用OWC时处理有间断的数据的方法
- 使用Transact-SQL进行数据导入导出方法