【问题标题】:How Migration Works in Repository Pattern迁移在存储库模式中的工作原理
【发布时间】:2015-02-05 11:43:58
【问题描述】:

目前我正在 Asp.Net MVC 中开发大型 N 轮胎应用程序和 想要分离数据、实体、服务、存储库(通用存储库 与作品单元)我在课堂上有参考Long Le article 库项目,这样我就可以在控制器和 Web API 中重用代码 具有代码优先实体框架和迁移的控制器,如果 模型已更改。因此,请建议上述最佳方法 理解吗?

由于我创建了单独的项目,将来在进行迁移时有什么影响吗?

【问题讨论】:

    标签: asp.net-mvc entity-framework unity-container repository-pattern


    【解决方案1】:

    您不需要实体框架代码优先的存储库模式,因为 DbContext 实现了存储库模式和工作单元。

    我通常定义通用的数据库接口。类似的东西:

    public interface IDatabase
    {
        IDbSet<Plan> Plans { get; set; }
    
        int SaveChanges();
    }
    

    然后我用我的 DbContext 实现接口:

    public class MyContext : DbContext, IDatabase
    {
        public IDbSet<Plan> Plans { get; set; }
        // ...
    }
    

    您可以创建用于测试目的的上下文

    public class MyMockContext : IDatabase
    {
        public IDbSet<Plan> Plans { get; set; }
        // ...
    }
    

    但是在你的控制器中你总是依赖注入 IDatabase。所以它不依赖于任何具体的实现(我在测试中使用 EFMock 库)。

    【讨论】:

    • 我不这么认为,这怎么可能?如果我不创建存储库模式,那么我需要在 Controller 的操作方法中创建 DbContext 实例,这不是存储库模式。
    • @anomepani 我已经更新了我的答案,如果您有任何问题,请告诉我。
    猜你喜欢
    • 2016-03-03
    • 2015-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 1970-01-01
    • 2016-05-10
    相关资源
    最近更新 更多