0
我正在使用類似模式的通用存儲庫來獲取數據。有100多個實體,因此爲每個實體創建單獨的存儲庫並不是真正的選擇。這裏是來自同一個班上有幾個功能:Telerik OpenAccess爲每個函數調用生成相同的查詢
public int Count(Func<TEntity, bool> x=null)
{
return x == null ?
mgr.CTX.GetAll<TEntity>().Count() :
mgr.CTX.GetAll<TEntity>().Where(x).Count();
}
public TEntity One(Func<TEntity, bool> x)
{
return mgr.CTX.GetAll<TEntity>().Where(x).Take(1).FirstOrDefault();
}
public IQueryable<TEntity> All(Func<TEntity, bool> x=null)
{
return x == null ?
mgr.CTX.GetAll<TEntity>() :
mgr.CTX.GetAll<TEntity>().Where(x).AsQueryable<TEntity>();
}
的問題是無論哪個函數調用,SQL事件探查器顯示來自[表]
相同選擇[列]
我想在使用Take(1)或Count()或Where()時應該使用計數(),頂部或其中條款選擇但這些功能對查詢生成完全沒有影響。顯然,每次操作似乎都是在從服務器獲取所有數據後在內存中執行的。
指導我如果我訪問它的方式有問題或者這是telerik的正常行爲?
你是那麼對!我真的不知道有什麼不同。現在telerik OA正在生成正確的語句。並且當然非常快:P謝謝,有什麼好的資源可以學習表達式? –