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

Ссылки:

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/

Теги: