c# - Linq to SQL 和使用 ToList,进行了多少次数据库调用?

标签 c# linq-to-sql

我有一个这样的函数

    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/

相关文章:

sql-server-2005 - <column> IS NULL vs <column> = LINQ to SQL 生成的 SQL 中的 NULL

c# - 如何将 Expression<Func<T,bool>> 替换为 linq to sql 表达式的 where 子句

c# - 如何在 LINQ 中实现动态 'where' 子句?

c# - 简易喷油器 : How to test registrations?

c# - 如何在 Xamarin.Android 上处理三重(或配置数量)点击手势?

c# - 程序每次更改时都需要读取文件

C# Linq 语法帮助 - 如何排除两个值?

c# - ASP.Net MVC Linq to Sql 如何处理空日期时间

c# - WPF 如果 ViewModel 中的 bool 值为 true,如何跳过动画结束?

c# - Google Drive API v3 (C# .NET) 按标题搜索文件夹/文件时抛出 RequestError Invalid Value [400]