C# 链接已编译的查询';s调用
假设我有一个已编译的查询,它命中数据库并执行selectC# 链接已编译的查询';s调用,c#,linq,entity-framework,C#,Linq,Entity Framework,假设我有一个已编译的查询,它命中数据库并执行select Func<MyContext, int, IQueryable<MyResult>> myQuery = CompiledQuery.Compile<MyContext, int, IQueryable<Employee>>((context, empId) => (ctx.Employees.Where(e => e.Id == empId)); or
Func<MyContext, int, IQueryable<MyResult>> myQuery =
CompiledQuery.Compile<MyContext, int, IQueryable<Employee>>((context, empId) =>
(ctx.Employees.Where(e => e.Id == empId));
orderby是在内存中完成的(即对上下文的查询只包含myQuery),还是调用带有orderby和toList()的链“myQuery”,以便在DB中完成订单和订单。
我相信是后者。我说的对吗?因此,如果您返回IQueryable,那么您将使用数据库。这意味着在您迭代集合之前,它不会被提取到内存中。好的,谢谢您的确认!由于Invoke(),我不确定它是否会立即导致db命中。因此,在这种情况下,它只会因为ToList()
函数可能返回IQueryable而命中db,但不清楚这是否是一个实时EF查询。可能是内存中的查询。使用SQL探查器进行测试。
myQuery.Invoke(ctx, paramA).orderby(x => x.someColumn).Take(10).ToList();