2009-01-16 24 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

相關問題