我的建議是創建一個GenericRepository<T>
,它具有核心基本方法(Find
,Save
,Delete
等)。
例子:
public abstract class GenericRepository<T> : IRepository<T> where T : class
{
public T FindSingle(Expression<Func<T,bool>> predicate) { .. };
public IQueryable<T> Find() { .. };
public void Delete(T entity) { .. };
}
然後創建一個從仿製一個繼承特定庫,創建專門的方法。
例子:
public class EmployeeRepository : GenericRepository<Employee>, IRepository<Employee>
{
public Employee FindByLastName(string lastName)
{
return FindSingle(emp => emp.LastName == lastName);
}
public ICollection<Employee> FindAllManagers()
{
return Find().Where(emp => emp.Type == "Manager").ToList();
}
// other methods...
}
意味着你不能在你的倉庫重複共同代碼。
是的,另一種選擇是有服務的GenericRepository<T>
工作。這意味着服務(本質上)是專門的存儲庫。
所以這只是一個偏好問題,如果你想要一個服務層或專門的存儲庫。
嗯......我會對你說的一些想法!謝謝!! – AndreMiranda