2009-01-16 19 views
2

写我的第一个LINQ的应用程序,我试图找到最好的方式来做到以下几点:如何在LINQ中加载整个SQL表?

我想加载整个员工表,一次填充缓存(用于自动完成表单)。

我可以做 -

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

但由于这是延迟加载,它生成每个雇员一个查询。我怎样才能加载整个表?

我已经看过DataLoadOptions但这似乎只适用于关系。

回答

3
var query = db.Employees.ToList(); 

顺便说一句,这相当于:

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

没有理由强迫自己使用的查询操作时,语法lambda语法更有意义和更短。

附注1:类型query对象将是List<Employee>,但是,没有任何区别产生IL而言吧,如果我们明确指定它的性能。

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

+0

当你确切地知道会发生什么时,你为什么要使用“var”?难道你不能使用员工名单吗? – 2009-01-16 16:33:40

相关问题