【发布时间】:2011-11-22 07:16:07
【问题描述】:
很明显,SqlConnections 是池化的,所以using 关键字看起来很完美,这是我一直使用和看到使用的方法。
例如...
public List<string> MyQuery()
{
List<string> list = new List<string>();
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
// do some stuff with connection, process the resultset and fill the list.
}
return list;
}
问题是:对于一个网页有多个查询,最好是每次都创建连接,还是共享查询之间的连接,共享一个工作单元?
性能会更好还是只是过早的不必要的微优化?
尽快关闭每个连接真的很重要,还是尝试将所有查询打包到一个工作单元中更好?
一个工作单元的例子可以是...
List<string> list1, list2;
string myvalue1, string myvalue2;
using (SqlConnection conn = new SqlConnection(connection))
{
list1 = MyQuery1(conn);
list2 = MyQuery2(conn);
myvalue1 = MyQuery3(conn);
myvalue2 = MyQuery4(conn);
}
这可能发生在页面加载期间,应该从数据库中获取多个数据。
【问题讨论】:
-
一般准则是关闭连接 a.s.a.p。但是,如果工作单元内的所有操作都必须在单个数据库事务中执行,那么您别无选择:您需要使用单个连接并使其保持打开状态。
-
是的,我明白这一点,也是使用连接的最简单方法,所以我对此感到非常高兴。
标签: c# asp.net sql-server design-patterns unit-of-work