Predicate Validator (aka Must) has an overload, which accepts predicate with two parameters (validated object and property value). In your case predicate will have type Func<Category, string, bool>
. So just add Category
parameter to your unique name validation method:
private bool UniqueName(Category category, string name)
{
ProjecteDataContext _db = new ProjecteDataContext();
var dbCategory = _db.Categories
.Where(x => x.Name.ToLower() == name.ToLower())
.SingleOrDefault();
if (dbCategory == null)
return true;
return dbCategory.ID == category.ID;
}