我会尽量简单地描述它。我们有SqlConnection
和3种方法。
第一类
此类型打开一个 SqlConnection和方法'具有属性SqlConnection。基本上他们只是使用sConnection并在方法内创建,使用,关闭SqlCommand和SqlDataReader
using (SqlConnection sConnection = new SqlConnection(string))
{
sConnection.Open();
Method objMethod = new Method();
objMethod.SqlConnection = sConnection;
objMethod.DoSomething();
Method2 objMethod = new Method2();
objMethod2.SqlConnection = sConnection;
objMethod2.DoSomething();
Method3 objMethod = new Method3();
objMethod3.SqlConnection = sConnection;
objMethod3.DoSomething();
}
第二类
此类型将在每个方法中分别创建新的SqlConnection,SqlCommand,SqlDataReader。对于3种方法,它必须打开和关闭3个SqlConnections。
Method objMethod = new Method();
objMethod.DoSomething();
Method2 objMethod = new Method2();
objMethod2.DoSomething();
Method3 objMethod = new Method3();
objMethod3.DoSomething();
问题是是否将SqlConnection封装在方法中,或者是否可以安全地在SqlConnection上创建并在方法中使用该打开的连接而无需打开新的。
由于
答案 0 :(得分:2)
如果您关注性能,则会汇集Sql Connections;很有可能两种方法只使用一种连接,因此使用第二种方法的代价可以忽略不计。
另一方面,第二种方法显示出更好的封装和关注点分离。我会选择第二种选择。
答案 1 :(得分:1)
汇集了SqlConnections。使用Sql Server,你最好打开,使用和关闭(使用块做 - 最后使用调用close的Dispose扩展)。
事实上,保持连接打开并保持连接实际上可能会损害性能,因为您正在破坏池行为并导致其他线程/请求在不需要时不必要地添加另一个连接到池。
让游泳池完成它的工作。