Db连接,是单身矫枉过正吗?

时间:2013-09-02 08:06:30

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

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

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

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

编辑:当我说单身时,我指的是每个请求单身。

1 个答案:

答案 0 :(得分:3)

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

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

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