Как сделать проверку в Silverlight / RIA, когда требуется вызов базы данных? - PullRequest
0 голосов
/ 01 марта 2011

Я чувствую, что есть лучший способ сделать это, чем то, как я делаю это сейчас.

Я использую Silverlight 4, RIA и EF (с адаптером Oracle). Я вставляю запись в таблицу и выполняю для нее большую проверку с помощью атрибутов Validation, но у меня есть одна часть проверки, которая требует запроса к БД для проверки существующих записей, прежде чем новая может быть вставлена ​​(кажется, что так и должно быть). общее и простое требование, нет?)

Сейчас я делаю это на стороне клиента с помощью метода Invoke на DomainService. Это кажется глупым и глупым. Но я не могу понять, как сделать эту серверную часть, где она действительно принадлежит.

Кажется, должен быть способ обработать всю эту серверную часть и сообщить клиенту об ошибке валидации, но я не могу понять это, и вряд ли кто-то подходит к этому конкретному сценарию валидации.

Ответы [ 2 ]

1 голос
/ 01 марта 2011

WCF RIA предоставляет средства для присоединения проверки к сущностям на стороне сервера. Вы создаете класс, как описано ниже, называя его Правилами.

public static partial class FooRules
{
  public static ValidationResult FooIDUnique(Foo foo, ValidationContext context)
  {
    bool check = false;

    using (FooEntities fe = new FooEntities())
    { 
      check = fe.Foo.Any(f => f.FooId == foo.fooId); 
    }
    if (!check)
      return ValidationResult.Success;

    return new ValidationResult("FooID error msg,", new string[] { "FooID" });
  }
}

Я собрал пример приложения, в котором показано добавление клиента и сервера проверки с помощью RIA.

Вы можете скачать его здесь .

0 голосов
/ 01 марта 2011

Я не знаю, как сделать ссылку на конкретную запись, но посмотрите эту ветку ....

http://forums.silverlight.net/forums/p/212555/502113.aspx

...