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" } })
EF 数据版本号,处理具体使用方法 RowVersion / Timestamp 使用方法。进行自动处理并发修改的更多相关文章
- EF数据迁移
在项目中使用Entity Framework的Code First模式,进行数据迁移时,Migration文件夹中存放的是每一次Entity的修改如何同步到数据的操作方法,每个文件中都只有Up和Dow ...
- EntityFrameWork简单操作 EF数据上下文对象操作数据增删改差及批处理
/// <summary> /// EF针对 留言数据库 的 数据上下文对象!!!! /// </summary> static LeaveWordBoradEntities ...
- 解决 MVC4 Code First 数据迁移 数据库发生更改导致调试失败解决方法(二)
文章转载自:http://www.cnblogs.com/amoniyibeizi/p/4486617.html 前几天学MVC过程中,遇到更改Model类以后,运行程序就会出现数据已更改的问题导致调 ...
- 开放数据接口 API 简介与使用场景、调用方法
此文章对开放数据接口 API 进行了功能介绍.使用场景介绍以及调用方法的说明,供用户在使用数据接口时参考之用. 在给大家分享的一系列软件开发视频课程中,以及在我们的社区微信群聊天中,都积极地鼓励大家开 ...
- vlookup函数基本使用--如何将两个Excel表中的数据匹配;excel表中vlookup函数使用方法将一表引到另一表
vlookup函数基本使用--如何将两个Excel表中的数据匹配:excel表中vlookup函数使用方法将一表引到另一表 一.将几个学生的籍贯匹配出来‘ 二.使用查找与引用函数 vlookup 三. ...
- 9.10 翻译系列:EF数据注解特性之StringLength【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/stringlength-dataannotations-attribute-in-co ...
- 9.7 翻译系列:EF数据注解特性之--InverseProperty【EF 6 Code-First系列】
原文链接:https://www.entityframeworktutorial.net/code-first/inverseproperty-dataannotations-attribute-in ...
- python - 数据描述符(class 内置 get/set/delete方法 )
数据描述符(class 内置 get/set/del方法 ): # 什么是描述符 # 官方的定义:描述符是一种具有“捆绑行为”的对象属性.访问(获取.设置和删除)它的属性时,实际是调用特殊的方法(_g ...
- 获取器操作都是针对数据而不是数据集的,要通过append()方法添加数据表不存在的字段
获取器操作都是针对数据而不是数据集的,要通过append()方法添加数据表不存在的字段 public function getMembership(){ //加入会员s_id = 1 $busines ...
随机推荐
- 【转】浅析SkipList跳跃表原理及代码实现
SkipList在Leveldb以及lucence中都广为使用,是比较高效的数据结构.由于它的代码以及原理实现的简单性,更为人们所接受.首先看看SkipList的定义,为什么叫跳跃表? "S ...
- 034_nginx报错总结
一.nginx: [emerg] "client_header_timeout" directive is not allowed here in /opt/nginx/conf/ ...
- $Django Rest Framework-序列化组件
1 序列化组件 e=serializers.SerializerMethodField() # 方法名:叫get_字段名, 参数,返回字典 def get_e(self,obj): #obj为b ...
- vuex之 mapState, mapGetters, mapActions, mapMutations 的使用
一.介绍 vuex里面的四大金刚:State, Mutations,Actions,Getters (上次记得关于vuex笔记 http://www.cnblogs.com/adouwt/p/8283 ...
- nginx配置文件注释说明
#定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数. worker_processes 8; #全局错误日志定义类型,[ debug | ...
- 34)django-上传文件,图片预览功能实现
目录 文件上传 1)form表单提交上传(会刷新) 2)ajax上传 3)iframe 4)图片上传预览(思路保存文件的时候,把文件保存文件的路径反馈回,客户端 ...
- css一些基础效果
1.旋转 .center>.bj>.div1>ul>li>.img1:hover {transform: rotate(-360deg);transition: 1s}/ ...
- 使用Eclipse进行Makefile项目
最近在MCU on Eclipse网站上看到Erich Styger所写的一篇有关在Eclipse中使用Makefile创建项目的文章,文章讲解清晰明了非常不错,所以呢没人将其翻译过来供各位同仁参考. ...
- Confluence 6 嵌入的 H2 数据库
为了让你的 Confluence 在安装成功后就可以使用而不需要使用任何外部的数据库,Confluence 使用一个嵌入的 H2 数据库. 当你选择对 Confluence 进行评估和测试的时候,H2 ...
- Confluence 6 导入模板的步骤
第一步:检查你 Confluence 站点中安装的模板组件 查看当前已经导入到你 Confluence 站点中可用的模板组件: 以系统管理员或者 Confluence 管理员权限登录 Confluen ...