2010-07-12 38 views

回答

2

我建议你离开请求缓存独自处理ADO.NET连接并使用connection pooling(这是默认值)。只要你想在任何地方做到这一点,它会正确关闭/处置:

using (SqlConnection cn = new SqlConnection(connectionString)) 
{ 
    using (SqlCommand cm = new SqlCommand(commandString, cn)) 
    { 
     cn.Open(); 
     cm.ExecuteNonQuery(); 
    } 
} 
+0

我会认为@Downvoter正在打我,原因与@LukeH相同。你为什么不发表一个答案,因为你是如此重要? – 2010-07-12 15:57:34

5

我会强烈建议您不把首先在缓存中的连接。

只要您需要连接,只需打开一个新连接(尽可能晚)。完成后只需关闭/处理(尽可能早)。您可能知道确保此行为的最简单模式是using块。

从池中打开和关闭连接非常便宜,默认情况下启用连接池。让连接池处理诸如缓存等细节:这就是它的存在,如果你自己做,它确实没有任何好处 - 并且有很多潜在的缺陷。

+2

@Downvoter:小心解释为什么? – LukeH 2010-07-12 12:43:59

+0

因为这不是回答这个问题,所以网站对它进行了步骤。这就像回答网络服务问题一样,不要使用网络服务,因为糟糕的事情可能会发生。我不能删除这个问题,所以我会重新整理一下。 – MatthewMartin 2010-07-12 15:45:18

+1

@MatthewMartin:如果所有的StackOverflow都回答了人们问的所有*错误的问题(而不是暗示海报可能完全错误地咆哮错误的树),那么它会更糟糕。您不能指责某人尝试帮助您解决与您最初发布的代码有关的严重问题。 – 2010-07-12 15:52:27

相关问题