Минусы EF

Версия 14.2 от Alexandr Fokin на 2022/12/01 04:45

  1. В некоторых ситуация плохая генерация sql запросов. Решается написанием немного иного кода или ручным написанием запроса. (См. ссылку 1, 3)
    Проблемы возможны при join, in. В целом при создании более сложных вопросов стоит оценивать генерируемый EF sql запрос.
    !Вполне возможна ситуация, когда несколько более простых последовательных простых запросов выполняться быстрее, чем один сложный запрос. (Из плюсов - механизм Change Tracking | Отслеживание изменений, который смапить все запросы в набор сущностей)
  2. Нет возможности сделать вложенную транзакцию из кода.
  3. Из коробки нет возможности указать использовать Табличные указания (Хинты) из кода (См. ссылку 2) и Сценарии и проблемы
  4. Проблема трансляции специфичных для БД функций для работы с примитивными типами. (Отчасти решается)
  5. Констатация факта: выполнение запроса с логикой на стороне БД (без загрузки данных в приложение) будет работать быстрее, но может быть не так удобно и требовать больше усилий со стороны разработки.
  6. Нет возможности выполнить запрос, возвращающий несколько таблиц в качестве результатов. (Ado.Net позволяет смаппить в DataSet).

Ссылки:

DotNetRu | Алексей Капустяненко «Почему же мой запрос на Entity Framework 6 тормозит? Часть 9000»
https://www.youtube.com/watch?v=IQjFIvkuFhM

Подводные камни Entity Framework и производительность
https://habr.com/ru/post/269901

Расширения Entity Framework 6, о которых вы могли и не знать
https://habr.com/ru/post/320128/

Update Data in Disconnected Scenario in Entity Framework Core
https://www.entityframeworktutorial.net/efcore/update-data-in-entity-framework-core.aspx

how to update entity without first loading it
https://entityframeworkcore.com/knowledge-base/56722199/how-to-update-entity-without-first-loading-it

How to batch delete or update in Entity Framework Core 5
https://www.reddit.com/r/dotnetcore/comments/k1esra/how_to_batch_delete_or_update_in_entity_framework/