FluentValidation nom unique de validation à l'aide de la base de données

J'ai Catégorie modèle de Nom de domaine, et chaque nom de catégorie doit être unique. J'ai fait la validation et il fonctionne lorsque j'essaie de créer une nouvelle Catégorie, mais j'ai un problème lorsque vous essayez de la modifier. Pour l'instant c'est juste de vérifier si le nom existe et bien sûr que c'est lorsque j'essaie de modifier une même catégorie.

Modèle

[Validator(typeof(CategoryValidator))]
public class Category
{
    public int ID { get; set; }
    public string Name { get; set; }
    virtual public ICollection<Image> Images { get; set; }
}

public class CategoryValidator : AbstractValidator<Category>
{
    public CategoryValidator()
    {
        RuleFor(x => x.Name).NotEmpty().WithMessage("Category name is required.").Must(UniqueName).WithMessage("This category name already exists.");
    }

    private bool UniqueName(string name)
    {
        ProjecteDataContext _db = new ProjecteDataContext();
        var category = _db.Categories.Where(x => x.Name.ToLower() == name.ToLower()).SingleOrDefault();

        if (category == null) return true;
        return false;
    }
}

Comme vous pouvez le voir j'ai UniqueName(string name) fonction, mais comment puis-je passer l'ID, ou tout modèle afin que je puisse vérifier si c'est la même id que modèle, je suis en train de l'éditer, puis il passe. Comment ai-je pu passer à quelque chose comme UniqueName(string name, int? id)? J'ai découvert FluentValidation seulement aujourd'hui et je ne peux pas comprendre.

InformationsquelleAutor sed | 2012-11-15