Недавно в проекте в нашем офисе на Мальте у нас возникли проблемы с производительностью Entity Framework с большими данными и вложенными запросами.
Это уже известно, и на нескольких сайтах есть подобные сравнения, которые я опубликую здесь, но мы хотели что-то более конкретное для нашего сценария, поэтому мы используем нашу схему проекта и аналогичные запросы с запросами наших конечных точек для проведения тестов.
4 разных сценария:
- 100 тысяч записей;
- 400 тысяч записей;
- 1 миллион записей;
- 2 миллиона записей;
Мы выполнили тесты Вставить, Обновить, Удалить и особенно Выбрать.
Помните, что все тесты были выполнены в одной базе данных и с использованием каждого инструмента наиболее оптимизированным способом, например: (IQueryable) в EntityFramework.
Полный рабочий лист со всеми тестами:
2 миллиона записей:
Таким образом, мы пришли к выводу, что TSql показал лучшие результаты даже при использовании AutoMapper, но окончательным выбором был Dapper, потому что было легко отображать объекты (меньше кода), а производительность была очень близка к TSql.
Исходный код: