|
3 / 3 / 1
Регистрация: 18.02.2021
Сообщений: 70
|
|||||||||||
Как смаппить сущность, имеющую внутри себя вложенный объект?13.07.2021, 14:12. Показов 13440. Ответов 41
Всем привет. Подскажите, пожалуйста, как настроить automapper для маппинга ToDoItem в ToDoModel
ToDo:
0
|
|||||||||||
| 13.07.2021, 14:12 | |
|
Ответы с готовыми решениями:
41
Смаппить сущность в Dictionary используя AutoMapper Прочитать вложенный объект внутри Json API. Как десериализовать вложенный объект? |
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
|||
| 30.08.2021, 07:33 | |||
|
Добавлено через 1 минуту
0
|
|||
|
198 / 93 / 43
Регистрация: 09.11.2019
Сообщений: 414
|
|
| 30.08.2021, 20:43 | |
|
0
|
|
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
|
| 31.08.2021, 10:46 | |
|
__Corey, ну не знаю) Вроде бы все себя вели культурно и обсуждение шло более-менее конструктивно)
0
|
|
|
3 / 3 / 1
Регистрация: 18.02.2021
Сообщений: 70
|
|
| 04.09.2021, 14:54 [ТС] | |
|
Usaga, вы уже вмешались в существующее обсуждение и не провоцировали его возникновение, так что мой наезд был большей частью необоснованный, за что я извиняюсь. А вот nikolas2008 реально полез не туда. Это просто флуд, о котором я не просил. Если с маппером будут проблемы, я сам до них дойду и,соответственно, буду принимать меры. Пока я встречаю его везде: и в книгах, и на бесплатной стажировке, и на работе. То есть знать, как с ним обращаться мне надо, это просто необходимо.
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 04.09.2021, 15:10 | |
|
JustAnAnimal, если хотите учится на своих ошибках, а тем более игнорировать конструктивную критику ваше право. Не буду больше вам мешать наступать на грабли, извините.
0
|
|
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
|
| 05.09.2021, 07:59 | |
|
JustAnAnimal, я тоже его везде встречаю. Как и Entity Framework. Но это мода, как джинсы подвёрнутые, а не полезная на практике вещь.
Касательно вопроса. Вы можете руками описать мапинг в автомапере, простой лямбдой или вызовом внешнего статического хелпера. Так вы и процесс проецирования в своих руках сохраните, на чём я настаиваю, и "необходимость" использования автомапера не нарушите. И коллегам вам объективно предъявить будет нечего. Мы таким путём пошли на работе прежде, чем дошло, что автомапер нам в этом процессе и не нужен, получается.
0
|
|
|
|
||
| 05.09.2021, 15:50 | ||
|
На всякий случай объясню примером - мы добавили новые свойства. Это значит надо найти все мапперы которые используют это свойство. А если этого не сделать то например в ДТО модели будет нулл или пустая коллекция. "Ой", же, разве нет? Как вы такую ситуацию решаете? Разумеется пример применим для энтерпрайз приложений много данных. Если скажете - "Ну ищем все использования и обновляем", то сразу вопрос - какой шанс не заметить то что делается не так очевидно, например через генерики, рефлексии и т.п. ? Автомаппер то и решает проблему "ленивых". Он действительно сделает за вас. И в том и другом есть неудобные моменты поддержки.
1
|
||
|
|
|
| 22.12.2021, 16:49 | |
|
Случайно наткнулся на статью и сразу вспомнил эту тему. Не смог не рассказать.
Automapper vs Explicit Conversion И больше всего меня поразили именно тесты. Результаты немного шокировали, даже не верится. Так ли это? А почему я вообще на такую страницу наткнулся? А потому что узнал ещё один вариант "маппинга" - через implicit/explicit. И мне стало интересно, что умные люди говорят. Теоритически это должно быть точной копией обычного самописанного трансформера. Но вот разница в месте размещения и инициализации разная. "Вдруг есть есть ньюансы", - подумал я и пошёл гуглить. А нашёл статью. Заодно вопрос - кто-то делает "маппинг" через приведение типов?
0
|
|
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
|||
| 23.12.2021, 07:00 | |||
|
2
|
|||
|
Модератор
|
|||
| 23.12.2021, 15:02 | |||
|
Можно неочевидно создать клоны и при этом не осознавать, что это разные экземпляры. Для explicit - он просто не даёт никаких преимуществ в сравнении с методом. Но как-то понятнее, привычнее использовать для создания других экземпляров метод, а (тип) использовать для присвоения ссылки на объект разным типам переменным, без клонирования самого объекта.Что бросилось в глаза это создание новых строк и парсинг в Explicit Conversion. Надо загрузить исходники теста с Гита, посмотреть их и повторить тест. Если будет на это время когда-нибудь...
0
|
|||
|
|
|||
| 23.12.2021, 16:00 | |||
|
Боюсь раздуть философскую дискуссию. Но разве нововведния в новых версиях C# всё больше и больше не "засахаривают" разработку? Не уменьшают количество написанного кода? Не делают логику исполнения более "прозрачной" для программиста. Я бы сравнил explicit конверсию с нововведнием - создание объекта без указания типа. Ну знаете ли, тоже настолько неочевидное и прозрачное действие, что без IDE (просмотр файла в Git например) вы сразу то и не поймёте что там будет за итог. Я против повсеместных "var", а сейчас ещё и типизацию убрали. Что мы получили: " var variable = new(item);". Ну зашибись, облегчили работу жёсткого диска в ущерб очевидности и пониманию.Я к чему. Если целью является написание кода который выполняет задачу, то explicit очень неплохо вписывается сюда. При продуманной архитектуре, тестах и т.п. он даёт тот же эффект, но меньшее количество кода в местах трансформации. Разве нет? А вообще, я против неочевидностей, сахарозы и уменьшению кода.
0
|
|||
|
Модератор
|
||||||||||||||||||
| 23.12.2021, 16:50 | ||||||||||||||||||
|
Но посты (вопросы и ответы) очень запутаны. А в том что от оператора явного приведения ожидаешь иного поведения. Пример, типового ожидаемого поведения:
И получаем весьма неочевидное:
Такое поведение является нормой для значимых типов, но для ссылочных, на мой взгляд, это может привести к путанице и трудноуловимым багам.
0
|
||||||||||||||||||
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
||||||||
| 23.12.2021, 16:51 | ||||||||
|
0
|
||||||||
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
|
| 23.12.2021, 17:39 | |
|
Элд Хасп, какой-то хреновый тест. Вы видели, ЧТО там сравнивается?) Основной посыл: Automapper не то, что не хуже, он даже немного быстрее. Но там автор упустил один момент, который и сказался на разнице в производительности. Угадаете, какой?)
Добавлено через 6 минут Вообще, можно сходу уже предположить, что происходит что-то не то в тесте, ибо автомапер один чёрт генерирует код, который равен тому, что написан руками. Т.е. должен быть максимум паритет, за вычетом первоначального штрафа на генерацию. Но уж никак не преимущество.
0
|
|
|
|
||||||||
| 23.12.2021, 17:44 | ||||||||
Добавлено через 2 минуты
0
|
||||||||
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
|
| 23.12.2021, 17:45 | |
|
HF, мой докапон был именно к вашему фрагменту кода) Понятно, что вы там ошиблись)
Но смотрите какое дело: я последние лет пять или шесть постоянно использую var и для меня (и моих коллег, которые ревьювят мой код) это не вызывает когнитивной нагрузки. Т.е. сидя в TortoiseHG не возникает необходимости запустить IDE и посмотреть какой же там реально тип. И просто при просмотре кода в IDE тоже.Т.е. проблема явно надуманная. В большинстве случаев, вам и не интересно знать какой там тип откуда прилетел и куда полетел.
0
|
|
|
Модератор
|
|||
| 23.12.2021, 17:45 | |||
|
Поэтому возможно упускаю ещё что-то. На уровне моих знаний, он работает через рефлексию и ни при каких условиях в равных задачах не может быстрее.
0
|
|||
|
14749 / 9524 / 1364
Регистрация: 21.01.2016
Сообщений: 35,936
|
|||
| 23.12.2021, 17:49 | |||
FullName. Отвечу: никак. Он не знает как и пропускает (оно не подпадает под соглашение). Поэтому профиль автомапера и быстрее. Если после конфигурирования автомапера вызвать AssertConfigurationIsValid();, то вы получите исключение, где автомапер скажет, что не знает как смапить это свойство.Добавлено через 1 минуту
0
|
|||
|
Модератор
|
||
| 23.12.2021, 17:51 | ||
|
И мне ещё не нравится преобразование в строку и обратно для свойства Id. Как-то уж очень подозрительно выглядит. Поэтому и хотел посмотреть исходники (которых как оказалось нет).
0
|
||
| 23.12.2021, 17:51 | |
|
Как работать с массивом в котором есть объект и вложенный массив?
Терминология: Класс, объект, экземпляр, сущность. (Дейт о путанице в этой сфере) Как настроить форму обратной связи под себя? (файлы внутри) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо
Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
|
|
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман.
Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
|
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
|
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
|
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ
Основная суть и тезисы по измерениям:
0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема.
Объект не может перемещаться в 0D.
1D (Первое измерение):. . .
|