前段时间,我为我的 .net 应用程序编写了一个 ORM 层,其中所有数据库行都由 DatabaseRecord
的子类表示。有许多方法,如 Load()
、Save()
等。在我的初始实现中,我在 DatabaseRecord
的构造函数中创建了一个与数据库的连接。
connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString
);
我会在访问数据库的方法开始和结束时,调用Open()
和Close()
来打开和关闭SqlConnection连接。这对于我来说(作为一个熟悉编程但是新手C#和.NET的人)似乎是最有效的方法 - 在类中只有一个连接,并在必要时打开/关闭它。
但是,我最近阅读了一些资料,发现这种模式在很多地方都被推荐使用:
using (var connection = new SqlConnection(...)) {
connection.Open();
// Stuff with the connection
connection.Close();
}
我明白为什么这很理想 - 即使您在中间执行的操作引发未捕获的异常,连接也会自动
Dispose()
。我只是想知道像这样潜在地多次调用new SqlConnection()
的开销是多少。连接池已经启用,因此我想开销很小,第二种方法应该是最佳实践,但我只是想确保我的假设是正确的。