代码之家  ›  专栏  ›  技术社区  ›  e36M3

Ninject IKernel在web应用程序中的存储位置?

  •  6
  • e36M3  · 技术社区  · 15 年前

    总的来说,我是国际奥委会的新成员,我很难理解我所做的一切是否有意义。我有一个web表单应用程序,我想在其中创建一个模块来定义一些绑定。这些绑定将用于将存储库注入到我的业务管理器类中,从而允许我对业务管理器进行单元测试。我还想使用容器将实体框架上下文注入到我的存储库中,这样每个http请求都共享相同的上下文。我想知道的是:

    1. 因为我正在使用Bind<&燃气轮机;要定义绑定,当我不应该从UI引用数据访问层时,如何在Web/UI层中进行定义?我的参考资料看起来像.Web-->。业务-->数据访问。似乎我想告诉内核“嘿,管理我的数据访问实例,但在编译时没有对它们的引用。”

    
        //Any object requesting an instance of AdventureWorksEntities will get an instance per request
        Bind<AdventureWorksEntities>().ToSelf().InRequestScope();
    
    

    2 回复  |  直到 15 年前
        1
  •  1
  •   Ruben Bartelink    15 年前

    重温第1部分-看看Ninject.Web扩展-它将内核保持在应用程序级别。然后,您也可以管理其他生命周期较短的资源。

    另外,看看这里关于EF和L2S DataContext management wrt Ninject和DI的问题和例子(在过去几周内)

    This answer to another question from the same OP is far more concrete (有一个 KernelContainer 带a的班级 .Inject( object) 和一个 .Kernel

        2
  •  1
  •   John Weldon user3678248    15 年前

    这真的取决于你的web应用程序的复杂性。

    推荐文章