asp.net mvc避免重复
问题描述:
我有一个用户表,其中没有两个相同的用户可以存在,什么是最好的方式来做这个错误免费?asp.net mvc避免重复
我所做的是我在控制器中写了一个重复检查,但有人对我说这是不对的。他说把独特的数据库表?我也在其他几个控制器上实现了这一点。我应该改变它吗?
答
有几个地方你应该这样做。
- 在数据库表级别:使用电子邮件作为用户名和标记为唯一constrant
- 在模型验证水平,你可以检查电子邮件,并在客户端返回验证错误
- ,你可以放置一些代码使用异步请求时,用户在文本框中输入用户名
,将检查用于实时重复的电子邮件或用户名 - 编辑 -
,建议在把所有三个更好的验证。不一致的数据对于您的系统来说是最糟糕的事情。因为我认为是的,正确的数据=质量好
- 编辑完 -
请记住,验证代码应放在模型,并学习如何编写管理的面向对象的代码,你可以看到例如的mvc store front。
希望这将有助于
答
最好就是在数据库级别,执行你的数据限制在可能的情况。考虑以下情况:
2请求在同一时间创建具有相同名称的用户。
- 请求1检查数据库,看看是否存在 - 用户不;
- 不久之后,请求2检查数据库以查看是否存在 - 用户没有;
- 请求1创建此用户。
- 请求2创建一个重复的用户。
- Bang。一切都停止按照你期望的方式工作。
至于是否使用唯一约束,或者有这个作为主键,则是另一个问题,并在很大程度上取决于你的情况(因为你有某种在这个表上,不要主键你是什么意思?)
我忘记提及我正在使用LINQ到sql – maztt 2010-11-16 11:57:52