2008-11-12 3 views
1

Я работаю с Windows Forms Databinding, реализуя интерфейсы, такие как IDataErrorInfo. Чтобы это работало, доменному (или бизнес-объекту) разрешено находиться в недопустимом состоянии. Фактически, объект домена должен сохранить недопустимое значение, поскольку пользователь ввел его для IDataErrorInfo для правильной работы. Пока объект не сохраняется в недействительном состоянии, мы в порядке.Ограничение против валидации?

Однако, поскольку строка темы предполагает, что мне было интересно, существует ли разница между контратацией и валидацией. Первое препятствовало бы пользователю вносить изменения во ВСЕ, более поздний тип проверки, описанный выше.

Позвольте мне объяснить - если у вас есть коллекция Person и Person имеет SSN. PersonCollection вводится на основе SSN, что означает, что в коллекции не может быть двух Persons с тем же SSN. Если мы допустим временное недействительное состояние на Person, введем ситуацию, в которой есть два Persons с дубликатом SSN в коллекции, хотя и временно. Это может привести к проблемам, когда другой объект работает с PersonCollection, ища объект Person с дублированным SSN, получая два объекта.

Итак, для меня, кажется, что некоторые типы валидаций должны быть ограничениями, а не (после изменения) валидации.

Мысли?

ответ

1

Для того, чтобы ваш пример, часть вашей проверки для Person должно быть правилом, которое проверяет, что его SSN не является дубликатом (кстати: в случае дублирования, как вы знаете, какой из них подходит).

Если у вас возникли проблемы, потому что ваш PersonCollection фактически является IDictionary ключом на SSN с, подождите, пока Person не санкционировано, прежде чем добавить его в коллекцию. Объект должен быть временно недопустим, чтобы вы это сделали.

Для получения дополнительной информации о валидации, отметьте my answer по номеру Business Objects, Validation And Exceptions.

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

  • Нет связанных вопросов^_^