Почему следует использовать Dapper? Также любой может прокомментировать Dapper Vs ADO.NET Плюсы и минусы [закрыто]

Я хотел бы понять, когда кому-то действительно нужно подумать об использовании Dapper. Также я хотел бы понять плюсы и минусы сравнения Dapper Vs ADO.NET

 Majedur Rahaman15 янв. 2019 г., 07:18
Вы можете увидеть тест производительности и простоту использования здесьexceptionnotfound.net/...

Ответы на вопрос(1)

делает является:

упростить правильную параметризацию запросовоблегчить выполнение запросов (скалярные, многострочные, многосеточные и безрезультатные)облегчить превращение результатов в объектыочень качественно и быстро

Что этоне сделать это:

создать модель класса для васгенерировать запросы для васотслеживать объекты и их изменения, так что вы можете просто позвонитьSubmitChanges() (или что угодно)

Необработанная библиотека dapper не предоставляет функции CRUD, но дополнительный пакет "contrib"делает предоставить базовый CRUD.

По сути, это не полноценный ORM, но если вы просто хотите выполнять запросы без необходимостиборьба ORM, или оплатить накладные расходы, связанные с ORM, это довольно здорово. Если вы не знаете SQL, необработанная библиотека, вероятно, не для вас (хотя, с «contrib» все будет в порядке), но многие люди не толькознать SQL, но они хотятконтролировать SQL (вместо того, чтобы позволить ORM придумать некоторую интерпретацию вашего намерения, которая не была оптимизирована и т. д.).

Подводя итог, причины могут быть:

Вы хотите превосходную производительность при минимальных накладных расходахВы хотите сохранить контроль над своим SQLвам не нужны или не нужны функции отслеживания объектов в полном объеме ORM

Что касается "против ADO.NET":

сырой ADO.NET включает в себямного больше кода для написания и множество крайних случаев, о которых нужно помнить (с которыми dapper имеет дело внутренне, не беспокоясь о них)но на самом деле это не быстрее - dapper делает много метапрограммирования для хранения и повторного использования стратегий, как только он сделал то, что ему нужно для вашего запросаесли вы используете специфичные для провайдера функции, которые недоступны в сыром ADO.NET (например, передача / выборка)SqlGeometry данные), это ненепосредственно Имеется в Dapper - вам нужно реализовать интерфейс, чтобы сказать ему, как обрабатывать ваш сценарий, но это не сложно (обратите внимание, что конкретныеSqlGeometry пример обрабатывается дополнительной библиотекой dapper)
 Ian Warburton04 окт. 2017 г., 23:59
Также не проверяет тип.
 Panagiotis Kanavos23 июн. 2016 г., 10:30
Еще одно отличие: Dapper делает использование параметризованных запросов настолько простым, что люди забывают вводить ошибки SQL-инъекций путем объединения операторов и необработанных значений.
 stt10615 янв. 2018 г., 17:15
Справедливо ли говорить, что тестирование проблематично при использовании dapper? Я думаю, что тестирование является причиной НЕ использовать dapper.
 Ehsan Sajjad31 окт. 2017 г., 15:01
@MarcGravell, так что вы имеете в виду, что в нормальных условиях dapper никогда не будет быстрее ado.net?
 Marc Gravell23 июн. 2016 г., 11:08
@PanagiotisKanavos хорошо, я включил это в "правильно" в самой первой пуле :)
 Marc Gravell31 окт. 2017 г., 15:24
Замечание @EhsanSajjad: ходят слухи (в твиттере, настолько публично), что в обозримом будущем может появиться какая-то важная конвейерная работа ADO.NET - мы гарантируем, что Dapper сможет говорить о любом новом API (даже если это означает, что "dapper v2", чтобы поговорить с "ado.net v2" - несмотря на наименование)
 vibs200616 мар. 2018 г., 07:50
Даппер - лучший. Я использую его, нужны ли нам хранимые процедуры или что-то еще.
 Marc Gravell31 окт. 2017 г., 15:22
@EhsanSajjad это не может быть быстрее, чем сырой API, над которым он находится; однако это может быть быстрее, чемтипичный код потребления ADO.NET - большая часть кода, потребляющего ADO.NET, имеет тенденцию быть плохо написанным, неэффективным и т. д .; и даже не заводи меняDataTable :)
 Marc Gravell15 янв. 2018 г., 17:28
@ stt106 определить "тестирование". Если ты имеешь ввидуединица измерения тестирование: тогда откровенно говоря, это не имеет отношения - неважнокакие механизм доступа к данным, который вы используете, вам придется абстрагировать его для чисто модульного тестирования; если ты имеешь ввидуинтеграция тестирование, тогда Даппер совершенно доволен этим. Итак: никаких дополнительных барьеров, связанных с тестированием, не добавляется. Если вы имеете в виду что-то более конкретное, пожалуйста, дайте мне знать, что вы имели в виду.

Ваш ответ на вопрос