В настоящее время я пытаюсь оптимизировать некоторые из запросов LINQ в своей программе, предварительно скомпилировав их. Некоторые из этих запросов широко используют интенсивную загрузку; здесь пример одного:
public static Func<DatabaseEntities, string, IQueryable<Employee>> GetAllByName =
CompiledQuery.Compile<DatabaseEntities, string, IQueryable<Employee>
((context, name) => context.Employees
.Include(e => e.Email)
.Where(e => e.LastName == name));
Пример использования:
var employees = GetAllByName(dbContext, "Bob").ToList();
К сожалению, попытка использовать это приводит к следующей ошибке:
LINQ to Entities не распознает метод "System.Linq.IQueryable [Employee] Include [Employee, Email] (System.Linq.IQueryable [Employee], System.Linq.Expressions.Expression [System.Func [Employee, Email]]) ', и этот метод не может быть переведен в выражение хранилища.
Я заметил, что нормальный метод быстрой загрузки (Include (string)) отлично работает в предварительно скомпилированном запросе. Есть ли способ использовать лямбда-версию?