Как предотвратить дублирование записей в таблице с помощью служб silverlight wcf ria

#validation #silverlight-4.0 #wcf-ria-services

#проверка #silverlight-4.0 #wcf-ria-services

Вопрос:

я разрабатываю образец приложения, используя ссылку ниже.

http://code.msdn.microsoft.com/Getting-Started-WCF-RIA-1469cbe2 .

Это бизнес-приложение silverlight, использующее службы wcf ria, как указано в ссылке.

в примере при добавлении нового сотрудника, если поле «Заголовок» сотрудника уникально в базе данных, и пользователь пытается ввести дублирующийся заголовок, как я могу это предотвратить? я имею в виду, что если ввести два одинаковых «заголовка», он должен пройти правильную проверку. Как я могу это сделать в текущем сценарии? я добавляю нового сотрудника, используя дочернее окно…

может ли кто-нибудь помочь?

Ответ №1:

Вы можете решить свою проблему, используя одну пользовательскую проверку, и я думаю, что это лучший способ, поскольку у вас могут быть загружены или не загружены все записи на стороне клиента, и в случае, если у вас загружены не все сотрудники, вам нужно перейти в базу данных, чтобы проверить, есть ли она с введенным заголовком…

В основном это будет выглядеть так:

Сначала создайте класс, который будет отвечать за проверку сотрудников

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

В метаданных, сгенерированных вашими domainservices в классе 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