加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 新ASP.NET MVC 6身份中AspNetUsers表中的Concurr

发布时间:2020-12-15 20:23:11 所属栏目:asp.Net 来源:网络整理
导读:ASP.NET MVC 6身份中AspNetUsers表中ConcurrencyStamp列的用途是什么? 这是AspNetUsers表的数据库模式: AspNetRoles表中还有: 我记得ASP.NET MVC 5身份中并不存在. 到目前为止,我注意到,它似乎具有GUID值,因为它是用以下代码定义的: /// summary/// A ra
ASP.NET MVC 6身份中AspNetUsers表中ConcurrencyStamp列的用途是什么?

这是AspNetUsers表的数据库模式:

AspNetRoles表中还有:

我记得ASP.NET MVC 5身份中并不存在.

到目前为止,我注意到,它似乎具有GUID值,因为它是用以下代码定义的:

/// <summary>
/// A random value that must change whenever a user is persisted to the store
/// </summary>
public virtual string ConcurrencyStamp { get; set; } = Guid.NewGuid().ToString();

但是这个文件对我来说是不够的,在哪些情况下才能使用它.

解决方法

作为名称状态,它用于防止并发更新冲突.

例如,在数据库中有一个名为Peter的UserA
2管理员打开UserA的编辑页面,要更新此用户.

> Admin_1打开页面,看到用户叫Peter.
> Admin_2打开页面,看到用户叫Peter(显然).
> Admin_1将用户名更新为Tom,并保存数据.现在,名为Tom的数据库中的UserA.
> Admin_2将用户名更新为Thomas,并尝试保存.

如果没有并发状态,Admin_1的更新将被Admin_2的更新覆盖,会发生什么.但是由于我们有ConcurrencyStamp,所以当Admin_1 / Admin_2加载页面时,邮件被加载.更新数据时,此戳记也将被更改.所以现在第5步将是系统抛出异常,告诉Admin_2这个用户已经被更新了,因为他的ConcurrencyStamp与他加载的不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读