Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
 Вопрос к знатокам AutoMapper: как найти его конфигурацию?  [new]
Bold Stump
Member

Откуда: Дубгород
Сообщений: 8
Попалось приложение, в котором используется эта либа.
При старте оно выполняет метод AutoMapperBootstrapper.Initialize() который вызыват для каждого ОРМ класса примерно такое:
Mapper.CreateMap<OrmCollectionClass1, OrmModel1>();

дальше, как у Гоги - "и так 8 раз", а в конце, когда все мапы инициализированы,
Mapper.AssertConfigurationIsValid();


OrmCollectionClass1 содержит поле типа IEnumerable<IEnumberable<KeyValuePair<string, object>>> где лежат все данные, высосанные из базы.

При загрузке из базы, в него пивотят (есть такое слово?) разворачивают на 90 градусов данные примерно таким алкогоритмом:
цикл по записям
цикл по полям
добавить КВП (имя колонки, значение колонки в таблице) в список КВП
фсё
добавить список КВП в список
фсё

Модель же содержит поля соответствуюие колонкам в таблице. Мне нужно добавить и туда, и туда 1 новое поле.

Добавляю его в запрос - всё чики-пуки, всё работает, аппликация работает.
Добавляю его в модель, и тот самый ассёрт поднимает исключение что найдено неотмапленное поле.
Если после .CreateMap() добавить
.ForMember(m=>MyNewField, opt=>opt.Ignore))

то исключение не поднимается, но и данные, разумеется, не мапятся. Делаю вывод, что маперу нужно знать, как мапить новое поле.

Так вот я никак не могу найти в их аппликации, где задаётся конфигурация для мапления данных в эти модели. Искал по именам классов моделей, но нигде не нашёл никаких следов, где бы автомапперу указывалось, откуда брать данные для полей. Что мне искать?

Ну и разумеется, иных уж нет, а те далече: изначальный разраб был уволен лет 10 назад, и спросить не у кого.

Сообщение было отредактировано: 14 апр 21, 21:11
14 апр 21, 21:12    [22309067]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к знатокам AutoMapper: как найти его конфигурацию?  [new]
petalvik
Member

Откуда:
Сообщений: 712
Bold Stump,

лучшим решением будет выпилить AutoMapper.
The reasons behind why I don't use AutoMapper. - тут описаны разные проблемы от него. В том числе и сложность поиска, где что куда мапится.

Чтоб не писать код мапинга вручную, по ссылке там можно скачать MappingGenerator - удобная вещь.

В комментариях там ответ автора АвтоМаппера. Он юлит, но всё же вынужден признать: AVOID using AutoMapper ... :D

От себя скажу, что на стековерфловочке огромное количество вопросов наподобие: "Как написать маппинг сложных моделей?.." (И практически всегда без ответов).
Имхо, любая либа/утилита/софтина должна упрощать жизнь. А AutoMapper (и подобные ему мапперы) только усложняют её.
10 май 21, 09:18    [22320013]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к знатокам AutoMapper: как найти его конфигурацию?  [new]
hVostt
Member

Откуда:
Сообщений: 19318
petalvik
лучшим решением будет выпилить AutoMapper.


Не соглашусь.

petalvik
The reasons behind why I don't use AutoMapper. - тут описаны разные проблемы от него. В том числе и сложность поиска, где что куда мапится.


Это проблемы любого решения с инверсией зависимостей. Абсолютно. Это вы ещё не видели решений полностью построенных на MediatR — можно повеситься.

Но в случае с AM именно в этом и фишка. Вы не знаете как оно там мапится, главное что мапится :)

petalvik
Имхо, любая либа/утилита/софтина должна упрощать жизнь. А AutoMapper (и подобные ему мапперы) только усложняют её.


Там задача простая. Из модели А получить модель Б. И с этой задачей AM справляется. Не со всеми решениями соглашусь в либе, но в целом именно упрощает жизнь.
11 май 21, 00:57    [22320227]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос к знатокам AutoMapper: как найти его конфигурацию?  [new]
hVostt
Member

Откуда:
Сообщений: 19318
Bold Stump
Делаю вывод, что маперу нужно знать, как мапить новое поле.


Ну да. Вроде как всё очевидно. Укажите как мапить новое поле. Если оно вам не нужно, то игнор.
11 май 21, 01:18    [22320229]     Ответить | Цитировать Сообщить модератору
Все форумы / WinForms, .Net Framework Ответить