似乎我发现的存储库模式的每个示例,在某些方面的实现都是不同的。以下是我主要找的两个例子。
interface IProductRepository
{
IQueryable<Product> FindAll();
}
然后通常会有另一层与存储库对话并调用 FindAll() 方法并执行任何操作,例如查找以字母 's' 开头的产品或获取特定类别中的产品。
我发现很多其他示例将所有查找方法放入存储库
interface IProductRepository
{
IEnumerable<Product> GetProductsInCategory(int categoryId);
IEnumerable<Product> GetProductsStartingWith(string letter);
IEnumerable<PromoCode> GetProductPromoCodes(int productId);
}
你建议我走哪条路?或者彼此有什么优点/缺点?
根据我阅读http://martinfowler.com/eaaCatalog/repository.html的理解,第一种方法似乎最能反映这一点?