我对DBContext
使用 Simple Injector 的 EF 的生命周期有疑问,我有一个连续运行的工作服务,但我希望DBContext
在消息的生命周期内初始化它,而不是在工作服务应用程序的生命周期内初始化。
有一些关于如何使用 Autofac 执行此操作的示例,但我在使用 Simple Injector 时遇到了麻烦。以前有人这样做过吗?
见: http: //nblumhardt.com/2011/01/an-autofac-lifetime-primer/
我们注册的当前实现是:
var registration = applicationLifestyle.CreateRegistration<ProjectContext>(container);
container.AddRegistration(typeof(IProjectContext), registration);
container.AddRegistration(typeof(ProjectContext), registration);
在工作模块内部,我们有:
container.RegisterModuleScoped(new CodeModule(), Lifestyle.Transient);
但是,我们不想为我们的 使用 Lifestyle Transient DBContext
,我们希望它在消息处理程序期间保持活动状态。
更新:
史蒂文,这听起来像是很好的解决方案,只是在注册IMessageHandler<T>
例如时遇到了一些问题
type 的构造函数包含未注册的名为“decorateeFactory”LifetimeScopeMessageHandlerDecorator
的类型参数。Func<NoticeMessageHandler>
我之前曾尝试过注册,并试图将其排除在外,还有很多变化,但没有运气。这是我注册装饰器的方式:
container.RegisterSingleDecorator(
typeof(NoticeMessageHandler),
typeof(LifetimeScopeMessageHandlerDecorator));
错误:
LifetimeScopeMessageHandlerDecorator 类型的构造函数包含
Func<NoticeMessageHandler>
未注册的名为“decorateeFactory”类型的参数。