0

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

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

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

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

4

1 回答 1

3

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

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

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

于 2013-09-02T08:27:23.430 回答