我的webapi项目是否仍依赖于数据访问层?

时间:2015-12-07 20:42:12

标签: c# asp.net-web-api ninject

使用依赖注入时,哪个模块保存接口?

例如,如果我有一个webapi服务项目和一个数据访问层项目,这意味着我将IUnitOfWork,IRepository等的定义放在webapi项目中,并放置实现这些接口的UnitOfWork,Repository等类在数据访问项目中?

其次,如果我正在使用包含所有绑定的NinjectConfigurator类,并将其放在我的webapi项目中,以便在启动时初始化,这并不意味着我的webapi项目现在依赖于数据访问层,因为绑定函数必须知道数据访问层中定义的类型吗?

例如

private void AddBindings(IKernel container) {
    container.Bind<myDbContext>().ToSelf().InRequestScope();
    container.Bind<IUnitOfWork<myDbContext>>().To<UnitOfWork<myDbContext>>();
    container.Bind<IUserRepository>().To<UserRepository>();
}

1 个答案:

答案 0 :(得分:0)

最佳做法是:

  1. 域层(实体,存储库和服务的接口)
  2. 数据层(存储库)
  3. IoC Layer(Ninject和所有模块)
  4. 表示层(Web项目)
  5. 你的绑定将在IoC层中,在你的web项目中你只需要调用模块。

    private static void RegisterServices(IKernel kernel)
    {
        kernel.Load(new DomainModules(), new DataModules(), new CrossCuttingModule(), new ServiceModules());        
    }