【发布时间】:2013-08-13 17:22:16
【问题描述】:
我已经为此绞尽脑汁好几个星期了……我现在拥有的是这样的:
- 一堆
*Service类 - 所有这些都依赖于通过 EF 访问数据库的不同
*Repository类 - 为了允许单元测试,
DbContext的派生被注入到存储库中。 (所以我不能使用using来处理上下文)
为了正确处理注入的 EF 上下文,我可以在 InRequestScope() 或简单的自定义范围内运行我的依赖树 - InScope(c => new object()) 位于顶层,InParentScope() 位于所有其他级别。
这两种方法都会在每次请求期间创建和处置大量对象。此外,我们讨论的是单页应用程序,因此 95% 的查询(大约 50 个)将在 2 个请求期间执行,因此InRequestScope() 似乎不是一个好主意。 *Service 类也没有状态,因此可以是 InSingletonScope() 并且可以最大限度地减少对象创建的数量。
问题
是否有可能在InSingletonScope() 中有父类*Service 和*Repository 并以某种方式将EF DbContext 注入一个范围内,每次访问它时都会返回一个新实例,并使用NInject 尊重IDisposable ?
我知道在创建对象时会注入依赖项,但这仍然可以通过某种方式进行管理吗?
【问题讨论】:
标签: c# architecture ninject