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

时间:2015-07-20 12:17:43

标签: c# generics orm repository anti-patterns

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

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

public class IEntity
{
    public int Id; 
}

public interface IRepository<T> where T: IEntity
{

    IEnumerable<T> 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<Author>
{

    Model1 _authorContext;

    public AuthorRepository()
    {
        _authorContext = new Model1();

    }
    public IEnumerable<Author> 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; 
    }
}
在我实现这个之前,我做了一些关于它是否是一个好主意的研究,我能找到的所有信息都是声称它是一种反模式,但没有解释原因。

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

0 个答案:

没有答案