Я заметил очень странное поведение Linq to Entities, если в запросе Linq используются пользовательские функции (которые должным образом объявлены и подключены к Linq). Предположим, я выполняю оператор
var list = (from ts in context.Tests select MyFunction(ts.TestId));
Linq строит правильный запрос SQL Select, который правильно использует MyFunction. Но проблема в том, что Linq генерирует и отправляет этот оператор для каждой строки в таблице, а не отправляет его один раз! Я посмотрел в профилировщике SQL и обнаружил, что количество раз, когда этот оператор Select отправляется на сервер, равно количеству записей в тестовой таблице…
Что это? Это еще одна ошибка в Linq to Entities? Кто-нибудь знает обходной путь? Поскольку подобное поведение действительно делает функции на стороне базы данных непригодными для использования.