如何在LINQ中加载整个SQL表?

时间:2009-01-16 16:27:44

标签: .net sql linq eager

编写我的第一个Linq应用程序,我正在尝试找到执行以下操作的最佳方法:

我想立即加载整个employees表来填充缓存(用于表单自动填充)。

我能做到 -

var query = from employee in db.Employees select employee;
foreach (Employee e in query)
{
    ...
}

但由于这是延迟加载,因此每个员工生成一个查询。我如何急切地加载整个桌子?

我调查了DataLoadOptions,但这似乎只适用于人际关系。

1 个答案:

答案 0 :(得分:3)

var query = db.Employees.ToList();

顺便说一句,这相当于:

var query = (from employee in db.Employees select employee).ToList();

当lambda语法更有意义且更短时,没有理由强迫自己使用查询运算符语法。

旁注1 query对象的类型将为List<Employee>,但是,如果我们明确指定它,则生成的IL和性能的条款没有区别。

附注2 :重要的是要知道问题中指定的查询不是每个员工执行一次。它只执行一次并从数据库逐个获取(类似于运行SqlDataReader查询的SELECT * FROM Employees对象)。但是,ToList()加载列表中的所有行,使得进入该对象的进一步查询在应用程序本身而不是SQL Server上执行。