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