简单的注射器诊断警告一次性瞬态

我正在尝试配置简单的注入器工作,但我似乎无法通过这个。 我按照说明如何在此链接中修复此问题,但它不起作用。 这是错误消息:

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(); } 

NotificationEntities是从EF生成的,所以它应该已经实现了,对吗?

NotificationEntities是从EF生成的,所以它应该已经实现了,对吗?

是的, NotificationEntities确实实现了IDisposable ,这正是警告告诉你的:

已经使用Transient生活方式注册了实现IDisposable的组件。

这是一个问题,因为:

实现IDisposable的组件通常需要确定性清理,但Simple Injector不会隐式跟踪和处理使用瞬态生活方式注册的组件。

要解决这个问题,您应该:

使用适合您正在使用的应用程序的范围生活方式注册组件。

换句话说,注册您的NotificationEntities如下:

 container.Register(Lifestyle.Scoped);