Подтвердить что ты не робот

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

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

4b9b3361

Ответ 1

Dapper - это просто инструмент. Что он делает:

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

Что он не делает:

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

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

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

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

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

Что касается "vs ADO.NET":

  • raw ADO.NET включает в себя лот больше кода для записи и много краевых дел, о которых нужно помнить (этот dapper имеет дело с внутренним, без необходимости беспокоиться о них)
  • но на самом деле это не так быстро - dapper делает много метапрограмм для хранения и повторного использования стратегий, как только он сделал то, что нужно для вашего запроса.
  • Если вы используете специфичные для провайдера функции, недоступные в сыром ADO.NET(например, передача/выборка данных SqlGeometry), они напрямую не доступны в dapper - вам нужно будет реализовать интерфейс чтобы описать, как обрабатывать ваш сценарий, но это не сложно (обратите внимание, что конкретный пример SqlGeometry обрабатывается дополнительной библиотекой dapper).