代码之家  ›  专栏  ›  技术社区  ›  Rick Rat

T4模板中的存储库

  •  1
  • Rick Rat  · 技术社区  · 14 年前

    我正在为存储库编写一个T4模板。

    假设我们有客户/订单/产品表。然后我们有CustomerRepo、OrdersRepo和ProductsRepo。

    对所有这些公司进行普通回购是一种好的做法吗?

    public partial class Repository
    

    {

    private IContext context;
    public Repository()
    {
        _Product = new ProductRepo();
        _Customer = new CustomerRepo();
    }
    
    public Repository(IContext context)
    {
        this.context = context;
        _Product = new ProductRepo(context);
        _Customer = new CustomerRepo(context);
    }
    
    private ProductRepo _Product;
    public ProductRepo Product {
        get { return _Product; }
    }
    // Product
    
    private CustomerRepo _Customer;
    public CustomerRepo Customer {
        get { return _Customer; }
    }
    // Customer
    

    }

    3 回复  |  直到 14 年前
        1
  •  1
  •   stimms    14 年前

    我发现最好为每种类型创建一个存储库,而不是一个存储库。否则,随着各种功能的添加,存储库往往会变得越来越大。

        2
  •  1
  •   Perpetualcoder    14 年前

    您甚至可以这样来实现您的存储库 post . 您甚至可以扩展这个概念并实现generic和have IRepository<T> where T:IEntity BaseRepository<T> . 根据您对问题的补充,您可能希望使用工厂模式、外观模式或依赖项注入(使用Unity/StructureMap容器)。这取决于它有多复杂,以及您的解决方案需要多灵活。

        3
  •  1
  •   Michael Freidgeim    12 年前

    我最近回顾了一些使用实体框架的存储库模式的实现,发现 https://github.com/tugberkugurlu/GenericRepository (描述日期) http://www.tugberkugurlu.com/archive/generic-repository-pattern-entity-framework-asp-net-mvc-and-unit-testing-triangle ) 最先进的。

    如果您将使用GenericRepository基类,那么使用t4模板生成派生类没有任何好处。