2013-02-07 2 views
-1

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

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

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

+0

Предоставлять некоторые из ваших собственных попыток решить вашу проблему. – kleinfreund

ответ

1

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

protected override DbEntityValidationResult ValidateEntity(DbEntityEntry entityEntry, IDictionary<object, object> items) 
{ 
    DbEntityValidationResult result = new DbEntityValidationResult(entityEntry, new List<DbValidationError>()); 
    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-us/data/gg193959.aspx

Смежные вопросы