![]() |
1
14
存储库实例的创建方式及其生存期与控制器无关。 在容器中注册组件时,应指定组件的生存期。根据您的实现,您可以简单地选择设置存储库的生命周期以跟踪会话。 在任何情况下,您都可以使用工厂从会话创建存储库,但要从控制器外部进行此操作。 您肯定需要去掉默认的构造函数。 在我的头顶上,我不记得如何在Unity或StructureMap中做到这一点,所以这里有一个温莎城堡的例子。 定义抽象工厂:
以及一个实现
现在登记所有的东西
这里我使用了PerwebRequest的生活方式,但是如果你想优化,你可能想创建一个自定义的PerwebSession生活方式。在城堡里这并不难,但我不记得在其他DI容器里有多难。 您还需要注册httpContextBase,因为myrepositoryFactory依赖它。 |
![]() |
Haim Ohayon · 这些链接之间有什么区别? 2 年前 |