Я недавно использовал EF и получил относительно хороший опыт работы с ним. Я также вижу много негативных отзывов о EF, что, к сожалению, вызывает сожаление, учитывая все, что он предлагает.
Одна проблема, которая удивила меня, была разница в производительности между двумя стратегиями извлечения данных. Первоначально я полагал, что активная загрузка будет более эффективной, поскольку он будет извлекать данные с помощью одного запроса. В этом случае данные были заказом, и я активно загружал 5-8 связанных таблиц. Во время разработки мы обнаружили, что этот запрос неоправданно медленный. Используя SQL profiler, мы отслеживали трафик и анализировали полученные запросы. Сгенерированный оператор SQL был огромным, и SQL Server, похоже, не очень-то это нравился.
Чтобы обойти эту проблему, я вернулся в режим отложенной загрузки / по требованию, что привело к увеличению количества запросов к серверу, но значительному увеличению производительности. Это было не то, что я изначально ожидал. Мой вывод, который, по-моему, справедлив для всех реализаций доступа к данным, заключается в том, что мне действительно необходимо провести тестирование доступа к данным. Это верно вне зависимости от того, использую ли я ORM или SQL Procs или параметризованный SQL и т. Д.