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 ...
随机推荐
- 【转】采用dlopen、dlsym、dlclose加载动态链接库
1.前言 为了使程序方便扩展,具备通用性,可以采用插件形式.采用异步事件驱动模型,保证主控制逻辑不变,将各个业务以动态链接库的形式加载进来,这就是所谓的插件.linux提供了加载和处理动态链接库的系统 ...
- Ubuntu 18.04使用sudo pip3报错
在使用sudo pip3 install python库的时候出现如下警告: The directory '/home/lzhu/.cache/pip/http' or its parent dire ...
- 剖析epoll机制
剖析epoll机制 Linux epoll机制; 写这篇文章的原因是, 上次百度面试被问到一个事件怎么添加到epoll的双向链表中的; 这个问题比较深入, 涉及到内核的实现问题, 今天就来理解一下; ...
- 005_elasticsearch的数据导入导出
一.全部备份和导入 安装:git clone https://github.com/taskrabbit/elasticsearch-dump.gitcd elasticsearch-dumpnpm ...
- Maven多模块项目加载
Maven多模块项目中如何让Spring运行时成功加载指定的子模块 将子模块pom加入到父模块pom的定义中,并继承父模块 在web.xml中配置加载子模块的Spring配置文件 在启 ...
- appium+java (六) 手机chrome浏览器操作
一.前言 早之前写过一段时间的appium for native app(即原生app脚本),但尴尬的是从未写过类似的文章,后期有时间我会陆续接着写,近一阶段有时间又把appium捡起来了,由于公司产 ...
- vue打包项目后使用-webkit-line-clamp: 2;这个属性不生效?
在项目中要实现多行省略,-webkit-line-clamp: 2;打包后不生效,使用下面的方法: word-break: break-all; text-overflow: ellipsis; di ...
- react轮播图----react-slick
1.安装 npm install react-slick; //安装样式 npm install slick carousel; 再在App.css中引入 @import "~slick-c ...
- Confluence 6 修改站点标题
站点标题是在浏览器的标题栏中显示的.在默认的情况下,标题被显示为 Confluence. 希望修改你站点的标题: 在屏幕的右上角单击 控制台按钮 ,然后选择 General Configuration ...
- RemoveDuplicatesfromSortedList
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3-&g ...