在 ASP.NET 应用程序中是否强制注入 DbContext .InPerRequestScope?

发布于 2025-01-02 00:02:26 字数 294 浏览 1 评论 0原文

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

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

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

I have been using Ninject IoC container in my ASP.NET MVC3 portal. Whenever I've been injecting Entity Framework DbContext in PerThread scope, my data wasn't consistent, changes would not get displayd for some time after I've made changes to Entities, etc.

After I've switched the IoC configuration to resolve a fresh copy of my DbContext instance for each request (PerRequestScope()), all the problems were gone.

So is it absolutely mandatory to use PerRequest injection strategy in MVC3 applications?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

焚却相思 2025-01-09 00:02:27

是的,这是强制性的。

您的问题是这样工作的:

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

Yes, it is mandatory.

Your problem works like this:

  • Thread A loads an entity
  • Thread B modifies that entity
  • The next request to Thread A uses the cached entity from the first request, ignoring the changes
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文