是否有任何替代方法不会关闭与ExecuteStoreCommand的连接

时间:2011-04-26 02:44:25

标签: performance ado.net entity-framework-4 database-connection

我们正在讨论每个请求概念的一个ObjectContext。 (Web应用程序) 我们不关闭Application_BeginRequest和Application_EndRequest之间的连接。 在请求期间,我们有一个ObjectContext。 我们打开它,在请求期间不要关闭。

实体框架中有一个ExecuteStoreCommand,但这对性能有点危险。因为当我们使用它时(我认为)它关闭了一个连接。当我们再次打开连接后使用ObjectContext时(这是性能问题?)

那么ExecuteStoreCommand还有其他选择,还是我疯了:)

1 个答案:

答案 0 :(得分:0)

如果正确使用connection pooling,“结束”和“打开”连接不会对性能产生任何实际影响。连接池包含多个打开的连接,这些连接由多个后续操作重用。在大多数情况下打开仅意味着“从池中获取连接”,关闭意味着“将连接返回到池”。如果池中没有可用的连接池,则将处理打开新连接以及限制并发使用的连接数。连接池是根据连接字符串+用户标识定义的。

仅当命令开始执行时未打开任何连接时,

ExceuteStoreCommand才会关闭连接。这意味着如果您使用自己的连接传递给上下文,它将不会关闭它。