我已經設置了與代碼優先方法的實體框架項目: Link to code-first approach。凡Lambda表達式加載整個表
我已經加入通過插入函數來訪問儲存庫的方法:
的接口,用於存儲庫:
IQueryable<T> GetMany(Func<T, bool> where);
的EntityRepositoryBase方法:
public virtual IQueryable<T> GetMany(Func<T, bool> where)
{
return dbset.Where(where).AsQueryable();
}
的我如何訪問它
實施例:
genericRepositoryName.GetStuffInHere(x => x.Name== "Billy");
然而,當該執行它加載整個表和向下過濾數據。如你所想,這需要很長時間。我有一個使用.Find()的ByID方法,它正確地執行查詢並以毫秒爲單位獲取記錄。我完全不知道爲什麼會發生這種情況 - 或者我做錯了什麼。是否有更好的方法來抓取所有包含字段「Hello」的字段的記錄。當前進程需要5-10秒才能獲得記錄。
對,或者將'Func'改成'Expression >' –
2013-04-29 20:57:55
你也可以在你這樣做的時候擺脫'AsQueryable'。它開始沒有應該有一個暗示,你正在使用'Where'而不是IQueryable版本的IEnumerable超載。 – Servy 2013-04-29 21:09:45
@Kirk Woll非常好!這工作!非常感謝。 – 2013-04-30 12:27:13