我发现每次在使用仓储模式时,不同的实现方式都有所不同。以下是我主要发现的两个例子。
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之后,据我的理解,第一种方法似乎最能反映出这一点?