不久前,我为.net应用程序编写了一个ORM层,其中所有数据库行均由DatabaseRecord
的子类表示。有许多方法,例如Load()
,Save()
等。在我的初始实现中,我在DatabaseRecord
的构造函数中创建了与数据库的连接,例如
connection = new SqlConnection(
ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString
);
然后,在访问数据库的方法的开头和结尾,我在该SqlConnection上调用
Open()
和Close()
。在我看来(这是一位熟悉编程但不熟悉C#和.net的人)是做事的最有效方法-建立一个连接,并在课堂上必要时打开/关闭它。不过,我一直在阅读,似乎建议在许多地方使用此模式:
using (var connection = new SqlConnection(...)) {
connection.Open();
// Stuff with the connection
connection.Close();
}
我可以看到为什么这样是合乎需要的-即使您在中间进行的操作导致未捕获的异常,连接也会自动
Dispose()
d。我只是想知道这样多次调用new SqlConnection()
的开销是多少。连接池处于启用状态,因此我认为开销很小,第二种方法应该是最佳实践,但我只是想确保自己的假设正确。
最佳答案
是的,这是最佳做法。 using
使您对Close()的调用异常安全。
创建(任何)对象的开销确实是最小的,而对于短期对象(保留在GC生成0中)来说,开销最小。
请注意,您不再需要在using块的末尾调用Close(),它会自动为您完成(Dispose == Close)。
关于c# - 在C#中创建新的SqlConnection的开销,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2019993/