编写我的第一个Linq应用程序,我正在尝试找到执行以下操作的最佳方法:
我想立即加载整个employees表来填充缓存(用于表单自动填充)。
我能做到 -
var query = from employee in db.Employees select employee;
foreach (Employee e in query)
{
...
}
但由于这是延迟加载,因此每个员工生成一个查询。我如何急切地加载整个桌子?
我调查了DataLoadOptions
,但这似乎只适用于人际关系。
答案 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上执行。