Есть две статьи ( блог команды ADO.NET , блог Джулии Лерман * ) об автоматически скомпилированных запросах, которые дадут вам некоторое представление о производительности.Каковы основные моменты автоматически скомпилированных запросов и производительности:
- Функция может быть отключена глобально
- Функцией можно управлять в соответствии с ObjectQuery (но в настоящее время есть некоторые проблемы)
- Не слишком разбираясь во внутренних функциях, я полагаю, что эта функция должна быть быстрее даже для редко используемых запросов - она только увеличит потребление памяти.Если вы каждый раз составляете запрос, дерево выражений должно каждый раз проходиться и интерпретироваться как параметризованный SQL (я проверил один раз внутреннюю реализацию, и она действительно следует некоторым правилам построения компилятора / интерпретатора).Я сделал очень быструю проверку этой новой реализации кеша, и похоже, что автокомпиляция внутренне сохранит прототип DbCommand, используемый для выполнения запроса.Таким образом, единственное, что должно быть сделано в следующий раз при вызове запроса, - это обойти дерево выражений и вычислить его хеш, чтобы найти эту кешированную DbCommand и создать клон ее клона, который будет выполнен.
Но это в основном мои предположения, поэтому только фактическое использование покажет, действительно ли это правда.