我应该编写自己的连接池方案吗?
(问题再次被重写,所以我可以赞成人们的答案)
答案 0 :(得分:5)
我强烈建议您首先不要将连接放在缓存中。
每当您需要连接时,只需打开一个新连接(尽可能晚)。当你完成关闭/处理它(尽可能早)。您可能知道确保此行为的最简单模式是using
块。
打开和关闭池中的连接非常便宜,默认情况下启用连接池。让连接池处理诸如缓存之类的细节:这就是它的用途,如果你自己做的话,那就没有任何好处 - 还有很多潜在的陷阱。
答案 1 :(得分:2)
我建议您单独保留请求缓存以处理ADO.NET连接并使用connection pooling(这是默认设置)。只需在您想要的任何地方执行此操作,它将正确关闭/处置:
using (SqlConnection cn = new SqlConnection(connectionString))
{
using (SqlCommand cm = new SqlCommand(commandString, cn))
{
cn.Open();
cm.ExecuteNonQuery();
}
}