@DarkByte2015

В чем фишка Dapper?

Я прочитал вот такой гайд по Dapper и никак не могу понять в чем его отличие от обычного ADO.NET? Там же используются те же классы, обычные SQL запросы, никаким ORM и не пахнет... ORM это когда чистый SQL вообще не приходится писать. Как в Django или Yii.

П.С. Не агитируйте меня в пользу Entity Framework. Я про него знаю и сам бы рад на нем делать, но требование заказчика - жестко Dapper.
  • Вопрос задан
  • 11421 просмотр
Решения вопроса 1
EreminD
@EreminD
Кое-что умею
Первый коммент к той статье:
Очень мощная штука для массивных запросов. Не нем написан Stack Overflow. Там в документации есть несколько примеров использования: получение строго типизированной коллекции, динамических объектов и запрос без ответа. (как то так). Если бы их здесь вкратце (так удобнее) освеить - было бы здорово :)


Отличие, пожалуй в том, что у вас происходит маппинг автоматом (судя по статье).
В ADO.NET, вам надо из ридера самому вручную забирать значения (типа reader.GetInt32(0)). Что не очень приятно, особенно при работе с большим числом сложных таблиц

Толи дело, когда описываешь класс, делаешь запрос и просишь вернуть экземпляр
User user = null;
using (IDbConnection db = new SqlConnection(connectionString))
   {
         user = db.Query<User>("SELECT * FROM Users WHERE Id = @id", new { id }).FirstOrDefault();
   }


Собственно, вот вам и ORM. Вы не работаете с результатом запроса напрямую. У вас есть возможность сразу получить экземпляр класса и работать с ним.
А то, что на вход подается SQL-команда - выглядит, в какой-то степени, даже приятно и удобно.

Еще вот о том, почему Dapper (особенно раздел "Dapper и реляционные запросы" - ваще огонь) - https://msdn.microsoft.com/ru-ru/magazine/mt703432.aspx
А вот про то, кто быстрее - https://www.exceptionnotfound.net/dapper-vs-entity...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы