Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 链接已编译的查询';s调用_C#_Linq_Entity Framework - Fatal编程技术网

C# 链接已编译的查询';s调用

C# 链接已编译的查询';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

假设我有一个已编译的查询,它命中数据库并执行select

    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();