EntityFramework并发问题

孤城落雁 2014-09-03 02:57:22
很简单的例子: 注册帐号,
表结构: 自增ID、用户名、密码

要求用户名不能重复;





实际业务中: 注册提交时:

判断是否存在,不存在, 然后Add一条记录;

在EF中如果同时并发提交注册同一个用户名,在判断时每个并发判断都是不存在的,都成功注册了,

于是出现了同名的用户, 这个该怎么解决???


我知道用单例模式是可以避免这个问题的

不用单例模式 怎么解决呢


...全文
200 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
打算让这是个人一起进入超市呢 --> 打算让这是十个人一起进入超市呢 “设计模式”迷,会害死人的。要搞懂再用!
  • 打赏
  • 举报
回复
引用 楼主 u011886343 的回复:
我知道用单例模式是可以避免这个问题的 不用单例模式 怎么解决呢
呵呵,“单例模式”....... 我给你打个比方,如果有10个人去超市买货,在收银台只有一台收银机工作,请问你打算让这是个人一起进入超市呢?还是一个人出去之后才允许下一个人进入呢? 瞎联系什么“单例模式”就是后者,是没有动脑筋的!
threenewbee 2014-09-03
  • 打赏
  • 举报
回复
唯一约束和事务是正解,“单例模式”是没有用的。你说的4其实就是事务。
threenewbee 2014-09-03
  • 打赏
  • 举报
回复
将name设置为主键
孤城落雁 2014-09-03
  • 打赏
  • 举报
回复
引用 1 楼 lwq222121 的回复:
那就只能加锁了
引用 2 楼 wyumening 的回复:
两种方式 1:使用lock加锁 2: 设置事务隔离级别 百度搜一下就能查到具体方法了
引用 3 楼 webdiyer 的回复:
给用户名字段加上唯一值约束
感谢各位耐心回答, 总结一下: 1、单例模式 2、字段唯一性约束 3、事务隔离 4、执行SQL语句:“if not exists(查询记录) insert xxxxx” 目前我改成用方法4, 方法最终执行到入库时会是类似4的语句,if if not exists 这样就不会有并发问题
webdiyer 2014-09-03
  • 打赏
  • 举报
回复
给用户名字段加上唯一值约束
wyumening 2014-09-03
  • 打赏
  • 举报
回复
两种方式 1:使用lock加锁 2: 设置事务隔离级别 百度搜一下就能查到具体方法了
lwq222121 2014-09-03
  • 打赏
  • 举报
回复
那就只能加锁了

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧