Проверка Silverlight на нескольких объектах

Я использую Silverlight + EntityFramework + RIA Services в бизнес-приложении. В базовые таблицы базы данных входят таблица «Люди» и таблица «HumanAddresses». Каждый человек может иметь один или несколько адресов разных типов (например, дома, работы, места рождения и т. Д.). Всегда должен присутствовать хотя бы один адрес типа «Дом».

Пользовательский интерфейс позволяет редактировать, удалять и добавлять новые несколько адресов данного человека перед отправкой. Мне нужно выполнить проверку, чтобы выяснить, не нарушают ли эти изменения правило forenamed. Каков наилучший способ сделать это?

Я попытался использовать CustomValidationAttribute, но он позволяет (AFAIK) проверять только сущность, а не проверять несколько объектов, некоторые из которых должны быть удалены, в то время как другие должны быть добавлены или изменены.

1
nl ja de
Предоставьте некоторые из ваших собственных попыток решить вашу проблему.
добавлено автор kleinfreund, источник

1 ответы

Если вам нужен доступ к другим объектам, вам необходимо переопределить ValidateEntity в контексте базы данных. Это называется для каждой сущности, которая была изменена при вызове SaveChanges ().

protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary items)
{
    DbEntityValidationResult result = new DbEntityValidationResult(entityEntry, new List());
    result = base.ValidateEntity(entityEntry, items);
    //Do your validation
    if(invalid)
    {
        result.ValidationErrors.Add(new DbValidationError("Property", "Error Message"));
    }
    return result;
}

Ниже приведены параметры проверки в EF http://msdn.microsoft.com/en- нас/данные/gg193959.aspx

1
добавлено