Rails具有非常方便的唯一性验证.
ASP.NET MVC没有.
我只能看到一种进行这种验证的方法:在UniqueAttribute类中创建一个新的数据上下文对象.
但是我担心浪费一个新的数据上下文对象的记忆只是一个验证是危险的.
我错了吗?有没有更好的方法呢?
更新
这是我到目前为止
public class UniqueEmailAttribute : ValidationAttribute { public override bool IsValid(object value) { DataContext db = new DataContext(); var userWithTheSameEmail = db.Users.SingleOrDefault( u => u.Email == (string)value); return userWithTheSameEmail == null; } } // Usage [UniqueEmail(ErrorMessage="This e-mail is already registered")] public string Email { get; set; }
有两个问题.
只要有一个UniqueAttribute类就可以了,而不是用于电子邮件,用户名等的类别.我该怎么做?
>每次需要验证单个属性时创建新的数据上下文.
解
所以最后我在表上创建了一个唯一的约束,现在我只需要拦截Users库中的sqlException.工作很好,可能比在整个表中搜索同一个节点效率更高.谢谢!