Обновление комплексной модели в сценариях разноски форм и MVC
Многие люди писали об использовании Automapper для отображения объектов предметной области (моделей) для просмотра моделей, которые я нахожу очень интересными и полезными, но мой вопрос заключается в том, как сделать обратное. Я понимаю сложность этого процесса и почему Automapper не работает в этом сценарии, но мне приходится делать это много раз при публикации формы, особенно при обновлении.
У меня есть модель, я сопоставляю ее с моделью представления, а затем представляю форму пользователю. Затем форма разносится и в качестве моделей может быть довольно сложно, я использую пользовательские ModelBinders для обработки ответа и построения новой модели, которая не будет непосредственно сохраняться. Вместо этого я загружаю исходную модель из БД и вызываю метод, чтобы обновить ее из опубликованного, ничего не нарушая. Но это становится повторяющимся, и, возможно, есть лучший подход.
Примеры, которые я видел, очень ограничены моделью и наивны, но в нашем приложении мы можем иметь теперь 50+ сценариев размещения форм, таких как этот и растущий.
1 ответ:
Если вы хотите пойти в другом направлении, сначала создайте карту в другом направлении, Mapper.Map ()
Далее вы можете создать преобразователи типов (Mapper.CreateMap ().ConvertUsing ()), так как иногда форм может быть больше...строка-y.
Затем может потребоваться игнорировать или использовать значения назначения. Что может быть сконфигурирован с ForMember(объект => объект.Идентификатор опт => опт.Игнорировать ()) или ForMember (entity = > сущность.ChildCollection, opt => opt.UseDestinationValue ()).
Наконец, вы захотите использовать перегрузку, которая принимает существующий объект назначения, Mapper.Карта (dto, сущность).