Рекомендации по проверке сущностей Entity Framework в ASP.Net MVC 3 с использованием шаблона хранилища? - PullRequest
1 голос
/ 08 июня 2011

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

Класс контроллера имеет хороший метод UpdateModel (модель), который сделает все за вас и убедится, что он получает все свойства. Это прекрасно работает, но не обходит проблему дополнительной проверки и тот факт, что служба получает объект из репо.

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

Ответы [ 3 ]

3 голосов
/ 08 июня 2011

Вы можете реализовать интерфейс IValidatableObject в ваших классах сущностей и / или в моделях представления.

И EF 4.1, и MVC 3 знают об этом интерфейсе.

MVC вызовет метод Validate в методе UpdateModel, и, если будут какие-либо ошибки проверки, он выдаст исключение. MVC даже поместит ошибку проверки в представление. Проверка MVC

EF также вызовет этот метод перед сохранением вставок и обновлений.

Вы можете поместить все сложные правила проверки (которые не могут быть объявлены с помощью аннотации данных) в Проверка метод

1 голос
/ 08 июня 2011

По какой причине вы не можете использовать существующие аннотации данных, которые хорошо интегрируются с MVC?

http://www.scribd.com/doc/55504020/29/Using-MetaData-Partial-Classes-with-Entity-Framework Если вы не хотите полагаться на привязку к существующей модели, чтобы установить эту информацию для васзатем вызов TryUpdateModel обновит ваше состояние модели, после чего вы сможете использовать ModelState.IsValid.

0 голосов
/ 08 июня 2011

Вы смотрели на AutoMapper , он предназначен для такого рода вещей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...