0
而不是一個接口,我希望我的存儲庫從一個抽象類(Base Repository)繼承。我決定我想使用抽象類,因爲我不會單元測試存儲庫(我將單元測試服務層),而且我不想將相同的實現複製到從此基本存儲庫繼承的每個存儲庫類。C#與實體框架有沒有一種方法來實現存儲庫模式與抽象基類?
例如:
public abstract class BaseRepository<T> where T : class
{
protected DbSet<T> dbSet;
public BaseRepository(DbContext dataContext)
{
dbSet = dataContext.Set<T>();
}
public void Insert(T entity)
{
dbSet.Add(entity);
}
public IEnumerable<T> SearchFor(Expression<Func<T, bool>> predicate)
{
return dbSet.Where(predicate);
}
public IEnumerable<T> GetAll()
{
return dbSet;
}
public T GetById(int id)
{
return dbSet.Find(id);
}
}
當我試圖建立從這個基礎庫繼承其他存儲庫,我得到的構造問題。如何將datacontext傳遞到這些派生類,以便可以使用它們?
你的榜樣是行不通的,因爲我的基類是抽象的。在C#中,抽象類不能實例化。 – RiceRiceBaby 2013-03-15 19:45:02
不要使它成爲抽象基類。在你的UnitOfWork類中創建你的repo,並用這個Repo類實例化它們。 – 2013-03-15 21:42:03
我想創建一個抽象基類,這樣我就不必爲所有存儲庫類添加相同的實現。我沒有看到創建接口的要點,因爲我只會用假服務類來對控制器進行單元測試。 – RiceRiceBaby 2013-03-19 15:56:17