迁移如何在存储库模式中工作

时间:2015-02-05 11:43:58

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

  

目前我正在开发Asp.Net MVC中的大型N轮胎应用程序   想要分离数据,实体,服务,存储库(通用存储库   与单位工作)我在课堂上参考Long Le article   库项目所以我可以在控制器和Web API中重用代码   如果控制器具有代码第一实体框架并且发生迁移   模型改变。所以,请建议上面的最佳方法   理解?

由于我创建了单独的项目,以后在迁移时会有什么影响吗?

1 个答案:

答案 0 :(得分:0)

您不需要使用Entity Framework Code First的存储库模式,因为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库)。