我正在嘗試爲我目前正在開發的基於實體框架的項目編寫一個通用的最適合大多數存儲庫模式的模板類。在(重簡化)接口是:EntityFramework存儲庫模板 - 如何在模板類中編寫GetByID lambda?
internal interface IRepository<T> where T : class
{
T GetByID(int id);
IEnumerable<T> GetAll();
IEnumerable<T> Query(Func<T, bool> filter);
}
GetByID被證明是殺手。在執行中:
public class Repository<T> : IRepository<T>,IUnitOfWork<T> where T : class
{
// etc...
public T GetByID(int id)
{
return this.ObjectSet.Single<T>(t=>t.ID == id);
}
t => t.ID == id是我努力的特定位。是否有可能在沒有類特定信息可用的模板類中編寫像那樣的lambda函數?
雖然我可以做類似||的事情public T GetSingle( filter)||如果可能的話,我真的更喜歡更簡單的GetByID,因爲每個存儲庫綁定的類將作爲一個堅實的規則擁有一個ID屬性。 –
nathanchere
2010-05-31 06:47:05
到目前爲止最接近的解決方案是返回查詢(函數(x)CType(x,Object).ID = ID)其中查詢是datacontext.Where(過濾器)的包裝。 – nathanchere 2010-06-02 03:49:54