2. Обо мне
1. Владелец компании ByndyuSoft
http://www.byndyusoft.com
2. Консультант по вопросам разработки приложений и организации работы
IT компаний
3. Внештатный сотрудник Академии АйТи
4. Технический блог http://blog.byndyu.ru
5. Преподаю в ЮУрГУ
6. Тренер на AgileCamp
7. Организую конференции .NET-разработчиков
http://www.dotnetconf.ru
8. Веду группу по проблемам разработки приложений
https://groups.google.com/forum/?hl=ru&fromgroups#!forum/dotnetconf
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 2
3. Проблематика
1. Скорость
2. Гибкость запросов
3. Утечки памяти
4. Много чтения, мало записи
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 3
4. Dapper = Data Mapper
1. GitHub: https://github.com/SamSaffron/dapper-dot-net
2. Nuget: https://nuget.org/packages/Dapper
3. DataMapper: http://martinfowler.com/eaaCatalog/dataMapper.html
«Dapper is a single file you can drop in to
your project that will extend your
IDbConnection interface»
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 4
5. Ключевая особенность
1. Высокая скорость
маппинга
2. Низкоуровневое
управление запросами
3. Отсутствие накладных
расходов
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 5
6. Примеры
Полный список примеров:
https://github.com/SamSaffron/dapper-dot-
net/blob/master/Tests/Tests.cs
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 6
7. QueryObject
Описание шаблона:
http://martinfowler.com/eaaCatalog/queryObject.html
• Инкапсулируем логику составления
запроса
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 7
8. Примеры с QueryObject
Полный список примеров:
https://github.com/AlexanderByndyu/ByndyuSoft.Infrastructure/tree/master/
source/Infrastructure.Dapper.Tests/CRUD
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 8
9. Кэширование запросов в MSSQL
• Точный кэш запроса
• Использование параметров
Как SQL Server компилирует динамический SQL
http://www.somewheresomehow.ru/fast-in-ssms-slow-in-app-part3
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 9
11. Преимущества
1. Высокая скорость работы
2. Стабильность, отсутствие утечек памяти;
3. Гибкость при создании запросов;
4. Легок для работы приложения, не
требователен к ресурсам;
5. Чистый домен приложения, без
дополнительных интерфейсов и
изменения кода для работы ORM;
6. Надо больше думать при работе с
данными.
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 11
12. Недостатки
1. Написание SQL-кода вручную;
2. Нет готового кэша и готовых
провайдеров для кэширования;
3. Надо больше думать при работе с
данными;
4. Сложно работать с вложенными
сущностями;
5. SQL-код будет зависеть от СУБД.
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 12
13. Расширения для Dapper
1. Dapper.Rainbow
2. Dapper Async
3. Dapper.Contrib
4. Dapper.Extensions
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 13
14. Аналоги
• Massive
• PetaPoco
• OrmLite
• Simple.Data
• BLToolkit
Примеры использования разных microORM:
http://yobriefca.se/blog/2011/06/21/microorms-for-dotnet-
inserts-updates-deletes
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 14
15. Ссылки:
1. Пример использования:
https://github.com/AlexanderByndyu/ByndyuSoft.Infrast
ructure/tree/master/source/Infrastructure.Dapper
2. Описание причин перехода:
http://blog.byndyu.ru/2013/03/dapper-queryobject-
orm.html
3. Обертка в NuGet:
https://nuget.org/packages/Infrastructure.Dapper
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 15
16. Спасибо за внимание!
Буду рад ответить на ваши
вопросы лично или через:
blog.byndyu.ru
alexanderbyndyu
alexander.byndyu@gmail.com
«Dapper + QueryObject», Александр Бындю, ByndyuSoft 16