是否必须在ASP.NET应用程序中为DbContext注入.InPerRequestScope?

Max*_*lov 3 ninject inversion-of-control asp.net-mvc-3

我一直在我的ASP.NET MVC3门户中使用Ninject IoC容器.每当我DbContextPerThread范围内注入实体框架时,我的数据都不一致,在我对实体进行更改等后的一段时间内,更改不会显示.

在我切换IoC配置以解决DbContext每个请求(PerRequestScope())的实例的新副本之后,所有问题都消失了.

那么在MVC3应用程序中使用PerRequest注入策略是绝对必须的吗?

SLa*_*aks 8

是的,这是强制性的.

你的问题是这样的:

  • 线程A加载实体
  • 线程B修改该实体
  • 对线程A的下一个请求使用第一个请求中的缓存实体,忽略更改

  • 带有一点显性的+1:对于直接或间接包含DbContext的每个服务都是强制性的.如果您有其他不包含DbContext的服务,则可以使用不同的生命周期范围配置这些服务. (3认同)