Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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
在Linq中调用Select()或GroupBy()到实体是否会触发查询数据库?_Linq_Entity Framework_Linq To Entities - Fatal编程技术网

在Linq中调用Select()或GroupBy()到实体是否会触发查询数据库?

在Linq中调用Select()或GroupBy()到实体是否会触发查询数据库?,linq,entity-framework,linq-to-entities,Linq,Entity Framework,Linq To Entities,我很难说出linq中的哪些操作导致向数据库发出SQL命令 我知道调用ToList()或迭代w/foreach会导致查询运行,但Select和GroupBy会导致代码在数据库上执行吗?不,它们不会,如果在IQueryable而不是IEnumerable上正确调用,它们将被编译为表达式,稍后将被转换为SQL 您可以使用intellisense工具提示查看当前调用的方法。如果扩展方法的第一个参数是IEnumerable而不是IQueryable,则将运行数据库查询。否,调用Select()和Group

我很难说出linq中的哪些操作导致向数据库发出SQL命令


我知道调用ToList()或迭代w/foreach会导致查询运行,但Select和GroupBy会导致代码在数据库上执行吗?

不,它们不会,如果在
IQueryable
而不是
IEnumerable
上正确调用,它们将被编译为表达式,稍后将被转换为SQL


您可以使用intellisense工具提示查看当前调用的方法。如果扩展方法的第一个参数是
IEnumerable
而不是
IQueryable
,则将运行数据库查询。

否,调用Select()和GroupBy()将不会命中数据库。只有在需要实际结果时(枚举时,使用ToList()、ToArray()、Count()等),才会对数据库执行查询。

否、
选择、
分组方式以及大多数其他方法都不会导致数据库请求。数据库请求通常仅在您执行需要知道结果的操作时才会发出,如您提到的调用
Count
ToList


为了帮助您了解何时进行数据库查询,记录这些查询可能会有所帮助。然后,当您逐步浏览代码时,您可以看到何时发送查询。

谢谢您的提示,但我不认为在Linq to entities中可以看到正在运行的日志……您可以看看这个问题及其答案:您确定在IEnumerable而不是IQueryable上调用GroupBy会导致将查询发送到数据库吗?我以为只有在开始枚举时才会发送查询。