У меня проблемы с попыткой придумать, как лучше всего воссоздать объект базы данных в действии контроллера.
Я хочу использовать ModelBinder, чтобы в моем действии я имел доступ к объекту через параметр, а не повторял код, чтобы получить объект из базы данных на основе параметра идентификатора. Поэтому я думал о том, чтобы иметь ModelBinder, который выполняет вызов уровня доступа к данным для получения исходного объекта (или создает новый, если его нет в базе данных), а затем привязывает любые свойства к объекту базы данных, чтобы обновить его. Однако я читал, что ModelBinder не должен делать запросы к базе данных (первый комментарий к этой статье ).
Если ModelBinder не должен выполнять запрос к базе данных (так, просто используя DefaultModelBinder), то как насчет объектов базы данных, которые имеют свойства, которые являются другими объектами БД? Они никогда не будут назначены.
Сохранение объекта после того, как пользователь отредактировал его (1 или 2 свойства доступны для редактирования в объекте), объекту ModelBinded будут отсутствовать данные, поэтому при сохранении его в том виде, как он есть, данные в базе данных будут перезаписаны недопустимыми значениями или ограничения NOT-NULL не выполняются.
Итак, как лучше всего получить объект в действии контроллера из базы данных, связанной с данными формы, отправленными обратно из представления?
Обратите внимание, что я использую NHibernate.