如何确保代码中的唯一列值?

时间:2011-09-05 05:48:56

标签: database asp.net-mvc-3 unique-constraint

我正在学习ASP.NET MVC,并且对于如何确保表的列(用户名和电子邮件)的唯一值感到困惑。

任何人都可以帮我提供示例代码或指向教程的链接,其中显示&解释了这个?

修改

我知道我可以在表格列上应用唯一的键约束并实现它。但是,我想知道如何通过ASP.NET MVC代码实现它?

更新

我希望检查我的应用程序,以便不会将重复的值传递给DAL,即在插入新行之前进行检查。

2 个答案:

答案 0 :(得分:0)

Mliya,这是您在数据库级别控制的,而不是在应用程序级别。

如果您正在设计一个包含users表的数据库,您希望将usernameemail列限制为UNIQUE,那么您应创建一个独特的索引在这些专栏上。

在不知道您的后端数据库(mySQL,SQL Server,MS Access,Oracle ......)的情况下,不是向您展示图片或告诉您更多内容,只需使用设计器创建表并将这些唯一约束添加到这些列中根据设计,您将确保不会为用户名和电子邮件插入重复的值。

我还建议您创建一个ID列,将其设置为PK(主键,这意味着它将自动设置为NON NULL和UNIQUE)。

从ASP.NET MVC应用程序中,您当然应确保不会将重复的值传递给DAL以获取用户名和电子邮件。您可以通过不同的方式执行此操作,如果任何用户已存在该用户名和/或电子邮件,则最容易在插入新行之前进行检查,如果存在,您可以显示通知消息,告知用户请选择另一对值

答案 1 :(得分:0)

在ASP.NET MVC架构中,您应该尝试在模型中进行大部分验证,但是使用这些类似的低级验证规则,有时候这是不可能的。您应该寻求答案的是域驱动设计(DDD),其中Application Services可以解决这种低级需求。

Application Services可以访问数据库(直接或更好;间接通过repositories)并可以执行低级验证并抛出ValidationException或类似的东西(详细信息为{当未满足先决条件或业务规则时,{1}}可以对用户采取行动并做出响应。

S#arp Architecture在最佳实践框架中实现所有这些,您可以将其用作ASP.NET MVC应用程序的基础。它对DDD原则和NHibernate持高度评价,它有时会强迫你如何做事,这就是重点。关于它的最重要的部分是它学会了如何处理这些问题。

为了更具体地回答你的问题,本着DDD的精神,我就是这样解决的:

Controller
相关问题