Обновить

Комментарии 6

Не совсем понятен смысл использования динамических объектов. Давно использую самописный ORM и все операции типа DataTable -> Entity прекрасно выполняются при помощи рефлексии. Даже не представляю, где здесь можно использовать динамические объекты.

В Dapper

var rows = await dbTransaction.QueryAsync(query, commandTimeout: context.CommandTimeout)

rows будут IEnumerable<dynamic> с именованием свойств 1:1 как вернула БД.

вот эти динамические объекты и маппятся на strong type.

Грубое сравнение рефлексии с Dynamitey тут: UsageReallyLateBinding · ekonbenefits/dynamitey Wiki · GitHub

в самом конце есть табличка сравнивающая CacheableInvocation с рефлексией, к тому же это просто менее громоздко синтаксически.

У даппера есть вариант при котором данные из запроса напрямую вносятся в объект Entity. Почему это не используете?

Часть статьи описывает причину.

Перечитал 2 раза, явно причина не выделена. Непонятно, почему для этой задачи не использовался SqlMapper. А так статья интересная, есть над чем подумать :)

ну в целом так - слишком много хэндлеров, сложности со спецификой Enum в некоторых кейсах, атрибуты переименования и игнорирования, проблемы с приведением измененных типов. Можно было сделать через TypHandler, но появилось бы много неочевидной магии и сложнее.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Информация

Сайт
www.mts.ru
Дата регистрации
Дата основания
Численность
свыше 10 000 человек
Местоположение
Россия