Предполагается, что Entity Framework 5+ прекомпилирует все запросы. Однако для запросов, таких как
List<Guid> ids;
var entities = context.MyEntities.Where(x => ids.Contains(x.Id)).ToArray();
Entity Framework не может предварительно скомпилировать запрос, и в зависимости от сложности всего запроса синтаксический разбор дерева выражений на SQL может потреблять несколько секунд. Кто-нибудь нашел обходное решение, чтобы получить предварительно скомпилированный запрос? Я не совсем понимаю, почему так сложно; конечно, это сложно сделать с параметрами, так как количество элементов может отличаться, но было бы достаточно, чтобы SQL выглядел как
SELECT a, b, c from MyEntities
WHERE c in __PLACEHOLDER__
а затем заменить местозаполнитель фактическими элементами списка. Конечно, это не так приятно, как прохождение параметров, но было бы намного лучше, чем ждать секунд для синтаксического разбора всего дерева выражений.