Ron*_*n T 7 c# dependency-injection simple-injector
我正在尝试配置简单的注入器工作,但我似乎无法通过这个.我按照说明如何在此链接中修复此问题,但它不起作用.这是错误消息:
NotificationEntities注册为transient,但实现了IDisposable.
这是SimpleInjectorInitializer.cs的代码
public static void Initialize()
{
var container = new Container();
container.Options.DefaultScopedLifestyle = new WebRequestLifestyle();
InitializeContainer(container);
container.RegisterMvcControllers(Assembly.GetExecutingAssembly());
container.Verify();
DependencyResolver.SetResolver(new SimpleInjectorDependencyResolver(container));
}
private static void InitializeContainer(Container container)
{
container.Register<IEmailTemplateRepository, EmailTemplateRepository>();
}
Run Code Online (Sandbox Code Playgroud)
NotificationEntities是从EF生成的,所以它应该已经实现了,对吗?
Ste*_*ven 11
NotificationEntities是从EF生成的,所以它应该已经实现了,对吗?
是的,NotificationEntities确实实现了IDisposable,这正是警告告诉你的:
已经使用Transient生活方式注册了实现IDisposable的组件.
这是一个问题,因为:
实现的组件
IDisposable通常需要确定性清理,但Simple Injector不会隐式跟踪和处理使用瞬态生活方式注册的组件.
要解决这个问题,你应该:
使用适合您正在使用的应用程序的范围生活方式注册组件.
换句话说,注册NotificationEntities如下:
container.Register<NotificationEntities>(Lifestyle.Scoped);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4923 次 |
| 最近记录: |