为什么通用存储库被视为反模式?

在我看来,许多专业的存储库类共享相似的特性,让这些类实现一个概述这些特性的接口是有意义的,创建一个通用的存储库

说明我的观点,说我们有这个代码

public class IEntity { public int Id; } public interface IRepository where T: IEntity { IEnumerable List { get; } void Add(T entity); void Delete(T entity); void Update(T entity); T FindById(int Id); } [Table("Author")] public partial class Author : IEntity { public int Id { get; set; } [Required] public string authorname { get; set; } } 

然后我们继续实现这些接口来创建我们的特定存储库

 public class AuthorRepository : IRepository { Model1 _authorContext; public AuthorRepository() { _authorContext = new Model1(); } public IEnumerable List { get { return _authorContext.Authors; } } public void Add(Author entity) { _authorContext.Authors.Add(entity); _authorContext.SaveChanges(); } public void Delete(Author entity) { _authorContext.Authors.Remove(entity); _authorContext.SaveChanges(); } public void Update(Author entity) { _authorContext.Entry(entity).State = System.Data.Entity.EntityState.Modified; _authorContext.SaveChanges(); } public Author FindById(int Id) { var result = (from r in _authorContext.Authors where r.Id == Id select r).FirstOrDefault(); return result; } } 

在我实现这个之前,我做了一些关于这是否是一个好主意的研究,并且我可以找到所有信息,我们称之为反模式,但没有解释原因。

为什么通用存储库被视为反模式?