为每个对象创建通用存储库与特定存储库的优势?
我们正在开发ASP.NET MVC应用程序,现在正在构建存储库/服务类。我想知道创建所有存储库都实现的通用IRepository接口是否有任何主要优势,而每个存储库都有自己的唯一接口和方法集。 例如:通用的IRepository接口可能看起来像(从此答案中获取): public interface IRepository : IDisposable { T[] GetAll<T>(); T[] GetAll<T>(Expression<Func<T, bool>> filter); T GetSingle<T>(Expression<Func<T, bool>> filter); T GetSingle<T>(Expression<Func<T, bool>> filter, List<Expression<Func<T, object>>> subSelectors); void Delete<T>(T entity); void Add<T>(T entity); int SaveChanges(); DbTransaction BeginTransaction(); } 每个存储库都将实现此接口,例如: 客户资料库:IRepository 产品存储库:IRepository 等等 我们在先前项目中遵循的替代方法是: public interface IInvoiceRepository : IDisposable { EntityCollection<InvoiceEntity> GetAllInvoices(int …