Вы можете решить свою проблему, используя одну CustomValidation, и я думаю, что это лучший способ, поскольку вы можете загружать или не загружать все записи на стороне клиента, а в случае, если у вас загружены не все сотрудники, вам нужно перейти к БД, чтобы проверить, есть ли кто-то с заголовком, введенным ...
В основном это будет выглядеть так:
Сначала создайте класс, который будет отвечать за проверку сотрудников
public class EmployeeValidationRules
{
}
тогда метод, который фактически выполнит валидацию:
public static ValidationResult ValidateTitle(string title, ValidationContext context)
{
AdventureWorks_DataEntities objectContext = new AdventureWorks_DataEntities();
Employee employee = context.ObjectInstance as Employee ;
if (objectContext.Emplyees.Any(e => e.Title == employee.Title))
{
return new ValidationResult("Title Allready Exists", new string[] { "Title" });
}
return ValidationResult.Success;
}
В метаданных, сгенерированных вашими службами домена в классе Employee, найдите свойство title, и вы должны добавить этот тег:
[CustomValidation(typeof(EmployeeValidationRules), "ValidateTitle")]
public string Title{ get; set; }
Примечание: все это должно быть сделано на стороне сервера ...
Более подробную информацию о валидации WCF вы можете найти здесь:
http://www.silverlightshow.net/items/WCF-RIA-Services-Part-6-Validating-Data.aspx
Вот еще одна очень хорошо написанная статья Джеффа Хэндли о валидации WCF:
http://jeffhandley.com/archive/2010/09/25/RiaServicesCustomValidationMethods.aspx