2010-10-12 57 views
0

我很难用Ninject V2的InRequestScope()来管理UnitOfWork。Ninject V2 InRequestScope:在每个请求上触发构造函数

_kernel.Bind<UnitOfWork>().To<SqlUnitOfWork>().InRequestScope(); 

我希望每当我通过容器请求UnitOfWork时,始终在整个请求中返回相同的对象。然而,在调试器中,我在对象的构造函数上有一个断点,并且无论何时向容器发出请求,构造函数都会触发,就好像创建了一个新对象。

var uow = CreateKernel().Get<UnitOfWork>(); 

有没有人有类似的经历,或者我缺少重要的东西?

+0

你确定这个物体没有被其他方式破坏吗? – Larsenal 2010-10-12 23:14:35

+1

另外,你的'CreateKernel'方法是什么样的? – Larsenal 2010-10-12 23:22:39

+0

感谢评论@Larsenal,这个问题事实上与我在初次调用之后访问CreateKernal方法有关。 – WDuffy 2010-10-12 23:39:36

回答

1

因为有其他人有这个问题,我的问题与global.asax文件有关。我手动将CreateKernal的结果存储在一个私有变量中。通过基本NinjectHttpApplication类的Kernal属性更改访问请求的创建内核对问题进行了排序。