Проверка сервисов WCF RIA: проверка уникальности поля без указания его ключа - PullRequest
0 голосов
/ 14 февраля 2012

Название несколько самоочевидно. У меня есть объект, у которого уже определен другой ключ (который должен оставаться таким), и мне нужно проверить, что определенное поле уникально

Я надеюсь использовать Validator, примененный в метаданных. Но я не могу использовать DomainService там, так как код должен работать как на сервере, так и на клиенте. Поэтому я понятия не имею, как я мог получить доступ к своему набору сущностей, чтобы увидеть, является ли значение поля уникальным ....

Идеи

Спасибо!

Ответы [ 2 ]

0 голосов
/ 01 мая 2012

Способ сделать это - создать файл с расширением .shared.cs на стороне сервера.Поставьте валидатор в это:

public class CustomValidation
{
     public static ValidationResult ValidateUnique(object o, ValidationContext c)
     {
         #if SILVERLIGHT
             //Do actual validation client-side:
             MyObject mo = c.ObjectInstance as mo; //Object we are checking is type MyObject
             MyDS ctx = new MyDS; //Domain Service
             System.ServiceModel.DomainServices.Client.InvokeOperation<bool> 
                    isUnique = //some invoke operation in Domain Service;

             isUnique .Completed += (s, e) =>
             {
                 if (!isUnique .HasError && !isUnique.Value)
                 {
                      //return error;
                      mo.ValidationErrors.Add(error);
                 }
             };
         #endif
         //Server-side always returns success:
         return ValidationResult.Success;
     }
}
0 голосов
/ 21 февраля 2012

Вы можете сделать это так

string _Str = string.Empty; общедоступная строка Str { get {return _Str; }

комплект { if () // добавляем ваш код здесь, чтобы проверить, является ли он уникальным или нет {

        throw new Exception("Please Enter EmailId");
    }
  _Str = value; OnPropertyChanged("Str");

    }

Это будет объявление свойства ur, и вы можете сделать его уникальным

...