Я хотел бы понять, когда кто-то действительно должен подумать об использовании Dapper. Также я хотел бы понять плюсы и минусы сравнения Dapper Vs ADO.NETЗачем использовать Dapper? Также можно прокомментировать Dapper Vs ADO.NET Плюсы и минусы
ответ
Dapper - это просто инструмент. Что делает является:
- сделать это тривиально просто правильно параметризовать запросы
- делает его тривиальным легко выполнять запросы (скалярные, мульти-строку, мульти-сетку, и нет-результатов)
- сделать его тривиальным легко превратить результаты в объекты
- очень быстро и эффективно
Что не сделать это:
- создать модель класса для вас
- генерировать запросы для вас
- объектов легкой и их изменения, так что вы можете просто позвонить
SubmitChanges()
(или любой другой)
Необработанные щеголеватый библиотека не предоставляют функции CRUD, но дополнительный пакет «contrib» делает обеспечивает базовый CRUD.
В принципе, это не полный вес ORM, но если вы просто хотите запускать запросы, не имея , бой ORM или оплатите накладные расходы, связанные с ORM, это довольно здорово. Если вы не знаете SQL, необработанная библиотека, вероятно, не для вас («Contrib» должно быть хорошо, хотя), но многие люди не только знают SQL, но они хотят, чтобы находился под контролем SQL (вместо того, чтобы позволить ORM придумать некоторую интерпретацию вашего намерения, которое не было оптимизировано и т. Д.).
Резюмируя, причины могут быть:
- вы хотите отличную производительность сырым выполнения с минимальными накладными расходами
- вы хотите сохранить контроль над SQL
- вам не нужны или хотите object- отслеживать особенности полного жира ОРМ
Что касается "против ADO.NET":
- сырье ADO.NET включает много больше коды писать и много реберных случаи, чтобы помнить о том (что щеголеватом сделке с внутренне без необходимости беспокоиться о них)
- , но это на самом деле не быстрее - dapper выполняет много метапрограммирования для хранения и повторного использования стратегий после того, как он выполнил то, что ему нужно для вашего запроса
- , если вы используете специфичные для поставщика функции, недоступные в необработанном ADO.NET (например, передача/выборка данных
SqlGeometry
), это не напрямую availalbe in dapper - вам нужно будет реализовать интерфейс, чтобы рассказать ему, как обрабатывать ваш сценарий, но это не сложно (обратите внимание, что конкретныеSqlGeometry
пример обрабатывается дополнительной библиотекой dapper)
Еще одно отличие: Dapper делает использование параметризованных запросов настолько простым, что люди забывают вводить ошибки SQL-инъекций путем конкатенации операторов и raw значения. –
@PanagiotisKanavos хорошо, я включал это в «правильно» в самый первый пуля :) –
хорошее объяснение –
Проведите исследование самостоятельно. Вы можете прочитать о правильной обработке ADO.NET в моем блоге: http://blog.gauffin.org/2013/01/ado-net-the-right-way/ – jgauffin
Dapper использует ADO.NET, но выполняет выполнение запроса и сопоставления результаты к объектам намного проще. Вот и все - так же быстро, но намного проще в использовании. PS: достаточно легко использовать правильно параметризованные запросы с Dapper, что люди забывают вводить ошибки SQL-инъекций из-за конкатенации строк значений. –