2014-10-07 56 views
0

我在我的ASP.NET MVC項目中使用實體框架。我需要知道,如果我正確處理以下情況。高效地使用實體框架

假設我的員工表有超過100000條記錄,我必須根據客戶要求應用各種過濾。

因此,我編寫1個方法ReadAll()從數據庫中檢索所有記錄,然後使用lambda表達式對數據源應用過濾。

例如:通過ID

public List<Employee> ReadAll() 
{ 
    // return List<Employee> 
} 


private Employee(int id) 
{ 
    Employee obj=ReadAll().where(o=>o.empID == id).First(); 
} 

我試圖用一個讀取所有方法,因爲有要應用不同的過濾和我沒有寫單獨的數據庫訪問方法他們每個人獲得員工。

這會對我的應用程序性能產生不利影響嗎?

+0

當然是的,你應該使用IQueryable而不是List – 2014-10-07 13:19:20

回答

6

更改ReadAll以返回IQueryable,以便在您應用過濾器並調用First()或ToList()之後纔會執行查詢。

public IQueryable<Employee> ReadAll() 
{ 
    // return List<Employee> 
} 

實體框架使用一個名爲deferred execution的概念。我鼓勵你閱讀它。