ASP.NET MVC validation de l'unicité

Rails a un très bon caractère unique de validation.

ASP.NET MVC n'est pas.

J'ai besoin pour vous assurer que l'adresse e-mail d'un utilisateur a entré n'a pas été enregistré par n'importe qui encore.

Je ne peux voir qu'une seule façon de faire ce type de validation: créer un nouvel objet de contexte de données dans le UniqueAttribute classe.

Mais j'ai peur que le gaspillage de mémoire sur un nouvel objet de contexte de données juste pour une validation est dangereux.

Ai-je tort? Est-il une meilleure façon de le faire?

Mise à jour

C'est ce que j'ai obtenu jusqu'à présent

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; }

Il y a deux problèmes.

  1. Il serait bon d'avoir un seul UniqueAttribute de la classe, pas des classes séparées pour les e-mails, noms d'utilisateur, etc. Comment puis-je le faire?
  2. La création d'un nouveau contexte de données chaque fois que vous devrez valider un seul attribut.

SOLUTION

Donc en fin de compte, j'ai créé une contrainte unique sur la table, et maintenant j'ai juste à intercepter SqlException dans Utilisateurs du référentiel. Fonctionne très bien et est probablement plus efficace que la recherche de la même nœud dans l'ensemble de la table. Merci!

source d'informationauteur Alex