Недавно в проекте в нашем офисе на Мальте у нас возникли проблемы с производительностью Entity Framework с большими данными и вложенными запросами.

Это уже известно, и на нескольких сайтах есть подобные сравнения, которые я опубликую здесь, но мы хотели что-то более конкретное для нашего сценария, поэтому мы используем нашу схему проекта и аналогичные запросы с запросами наших конечных точек для проведения тестов.

4 разных сценария:

  • 100 тысяч записей;
  • 400 тысяч записей;
  • 1 миллион записей;
  • 2 миллиона записей;

Мы выполнили тесты Вставить, Обновить, Удалить и особенно Выбрать.

Помните, что все тесты были выполнены в одной базе данных и с использованием каждого инструмента наиболее оптимизированным способом, например: (IQueryable) в EntityFramework.
Полный рабочий лист со всеми тестами:



2 миллиона записей:

Таким образом, мы пришли к выводу, что TSql показал лучшие результаты даже при использовании AutoMapper, но окончательным выбором был Dapper, потому что было легко отображать объекты (меньше кода), а производительность была очень близка к TSql.

Исходный код: