Я изучаю архитектуру Sharp и хотел бы узнать, как
получить доступ к результатам проверки после вызова Entity.IsValid ().
У меня есть два сценария, например
1) Если entity.IsValid () возвращает false, я хотел бы добавить
ошибки в коллекции ModelState.AddModelError () в моем контроллере.
например. в примере Northwind у нас есть EmployeesController.Create ()
действие, когда мы делаем employee.IsValid (), как я могу получить доступ к
ошибки
public ActionResult Create(Employee employee) {
if (ViewData.ModelState.IsValid && employee.IsValid()) {
employeeRepository.SaveOrUpdate(employee);
}
// ....
}
[Я уже знаю, что когда вызывается метод Action, связыватель моделей
применяет правила валидации (атрибуты валидатора nhibernate), так как
анализирует входящие значения и пытается присвоить их объекту модели
и если он не может проанализировать входящие значения, он регистрирует их как
ошибки в состоянии модели для каждого свойства объекта модели. Но что если я
есть некоторые пользовательские проверки. Вот почему мы делаем ModelState.IsValid
первый.]
2) В моих тестовых методах я хотел бы проверить валидацию nhibernate
правила тоже. Я могу сделать entity.IsValid (), но это только возвращает true /
ложный. Я хотел бы утверждать против фактической ошибки, а не только правда /
ложь.
В моих предыдущих проектах я обычно использую сервисный слой-оболочку для
Репозитории, и вместо вызова метода Репозитории напрямую из
контроллер, контроллеры вызывают методы уровня обслуживания, которые в свою очередь вызывают
методы хранилища. В моем слое обслуживания все мои собственные правила проверки
методы resides и Service Layer выдают пользовательское исключение с
NameValueCollection ошибок, которые я могу легко добавить в ModelState в
мой контроллер Таким образом, я также могу легко реализовать сложные
бизнес-правила в моем слое обслуживания, а также. Я знаю острую архитектуру
также предоставляет сервисный уровень проекта. Но что меня интересует и
мой следующий вопрос:
Как я могу использовать NHibernate Vaidators для реализации сложных пользовательских
бизнес-правила (не просто ноль, пусто, диапазон и т. д.) и сделать
Entity.IsValid () для проверки этих правил тоже?