【问题标题】:Db connection, is singleton overkill? [duplicate]数据库连接,单例是不是矫枉过正? [复制]
【发布时间】:2013-09-02 08:06:29
【问题描述】:

我一直将我的数据库连接用作单例,认为它更快或使用更少的资源。

我的 ASP.NET MVC 项目将有一个我的 EntityFramework 上下文实例,该实例通过依赖注入或其他方式传递给我的控制器。

但这是否值得甚至有必要让我的数据库上下文单点,或者如果我作为示例在一个或多个操作过滤器中具有我的上下文实例,然后在我的控制器中具有一个或多个实例,这是否相同?

编辑:当我说单例时,我的意思是每个请求的单例。

【问题讨论】:

标签: c# asp.net-mvc entity-framework


【解决方案1】:

您不应该,永远为您的数据库连接和/或数据上下文设置单例。

这不仅在并发环境(asp.net)中不起作用,而且维护内部实体映射的上下文的单个实例将占用越来越多的内存,迟早会导致崩溃使用大型数据库。

但相反 - 到处都有一个新实例 - 也是一种浪费。在 asp.net 中,另一个生命周期策略是最合适的:“per http context”生命周期策略。根据此策略,您可以为每个请求创建一个数据上下文实例,并在请求完成后处置数据上下文。

【讨论】:

  • 我会说您总是尽快处理数据上下文 - 而不仅仅是使用“在请求完成时。 "从技术上讲,请求应该始终完成,但数据上下文处理不应依赖于这个不相关的概念。
  • @WiktorZychla 谢谢你,我忘了在我的第一篇文章中添加,当我说单身时,我的意思是单身公关请求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-03
  • 2013-01-10
  • 2012-08-17
  • 2015-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
相关资源
最近更新 更多