我有一个这样的函数
public List<Code> GetCodes()
{
return _db.Codes.Select(p => p).ToList();
}
我在这个表中有 160,000 条记录,其中包含 2 列。
然后我也循环遍历如下..
List<Code> CodeLastDigits = CodeDataProvider.GetCodes();
然后循环
foreach (var postCodeLastDigit in PostCodeLastDigits)
我只是想了解对数据库进行了多少次调用以检索这些记录,并希望确保它只发生一次。
最佳答案
Linq 将延迟对数据库的调用,直到您给它一个调用的理由。
在您的情况下,您在 ToList()
方法中给出了原因。
调用 ToList()
后,您将在内存中拥有所有项目,并且不会再次访问数据库。
你没有提到你使用的是哪个数据库平台,但如果是 SQL Server,你可以使用 SQL Server 分析器来观察你对数据库的查询。这是查看 linq to SQL 调用了多少次以及正在运行哪些 sql 的好方法。正如@acfrancis 在下面指出的那样,LinqPad 也可以做到这一点。
对于 SQL Server,这里有一个很好的教程 creating a trace
关于c# - Linq to SQL 和使用 ToList,进行了多少次数据库调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20457610/