asp.net core系列中关于并发冲突的深入理解,有哪些细节和策略可以一探究竟?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1783个文字,预计阅读时间需要8分钟。
原文介绍如何处理多个用户并发更新同一实体时出现的冲突。主要分为两种情况:
1. 一种情况是,检查属性并发发冲突,使用 `[ConcurrencyCheck]` 属性;
2.另一种情况是,测试行的版本号以跟踪并发冲突,使用 `rowversion` 跟踪属性。
本文介绍如何处理多个用户并发更新同一实 体(同时)时出现的冲突 。
主要是两种:一种,检查属性并发冲突,使用 [ConcurrencyCheck] ;另一种,检测行的并发冲突,使用 rowversion 跟踪属性,如果在保存之前有修改,就报错
发生并发冲突的情况:
1.用户导航到实体编辑页面;
2.第一个用户的更改还未写入数据库之前,另一个用户更新同一实体;
此时,如果未启用并发检测,当发生更新时:
最后一个更新优先。即最后一个更新的值保存到数据库。而第一个保存的值将丢失。
举个例子:
1. Jane 访问 院系 编辑页 面,将英 语 系的 预 算 从 350,000.00 美元更改 为 0.00 美元 (第一个用户把金额改为0)
,
2. 在 Jane 单击 “ 保存 ” 之前, John 访问 了相同 页 面,并将开始日期字段从 2007/1/9 更改 为 2013/1/9。 (在第一个用户保存之前,第二个用户把时间从07年改为13年,注意此时第二个用户看到的金额还不是0)
3. Jane 先 单击 “ 保存 ” ,并在 浏览 器 显 示索引 页时 看到她的更改。
本文共计1783个文字,预计阅读时间需要8分钟。
原文介绍如何处理多个用户并发更新同一实体时出现的冲突。主要分为两种情况:
1. 一种情况是,检查属性并发发冲突,使用 `[ConcurrencyCheck]` 属性;
2.另一种情况是,测试行的版本号以跟踪并发冲突,使用 `rowversion` 跟踪属性。
本文介绍如何处理多个用户并发更新同一实 体(同时)时出现的冲突 。
主要是两种:一种,检查属性并发冲突,使用 [ConcurrencyCheck] ;另一种,检测行的并发冲突,使用 rowversion 跟踪属性,如果在保存之前有修改,就报错
发生并发冲突的情况:
1.用户导航到实体编辑页面;
2.第一个用户的更改还未写入数据库之前,另一个用户更新同一实体;
此时,如果未启用并发检测,当发生更新时:
最后一个更新优先。即最后一个更新的值保存到数据库。而第一个保存的值将丢失。
举个例子:
1. Jane 访问 院系 编辑页 面,将英 语 系的 预 算 从 350,000.00 美元更改 为 0.00 美元 (第一个用户把金额改为0)
,
2. 在 Jane 单击 “ 保存 ” 之前, John 访问 了相同 页 面,并将开始日期字段从 2007/1/9 更改 为 2013/1/9。 (在第一个用户保存之前,第二个用户把时间从07年改为13年,注意此时第二个用户看到的金额还不是0)
3. Jane 先 单击 “ 保存 ” ,并在 浏览 器 显 示索引 页时 看到她的更改。

