asp.net mvc避免重复

maz*_*ztt 2 c# asp.net-mvc linq-to-sql

我有一个Users表,其中不存在两个相同的用户,这个错误的最佳方法是什么?

我做的是我在控制器中写了一个复制检查,但有人对我说这不是一件正确的事.他说在数据库表上放了唯一的?我也在其他几个控制器上实现了这个功能.我应该改变它吗?

Pad*_*ddy 5

在可能的情况下,最好在数据库级别强制执行数据约束.考虑以下情况:

2个请求在大约相同的时间创建具有相同名称的用户.

  1. 请求1检查DB以查看是否存在 - 用户不存在;
  2. 不久之后,请求2检查DB以查看是否存在 - 用户没有;
  3. 请求1创建此用户.
  4. 请求2创建重复的用户.
  5. 砰.一切都按照你期望的方式停止工作.

至于是否使用唯一约束,或将其作为主键,是另一个问题,这在很大程度上取决于你的情况(因为你在这张桌子上确实有某种主键,不是吗?)