在c#中创建新SqlConnection的开销

vit*_*tch 5 .net c# database sqlconnection

前段时间我为.net应用程序编写了一个ORM层,其中所有数据库行都由一个子类表示DatabaseRecord.有许多的类似方法Load(),Save()在我最初的实现我创建的构造到数据库的连接等等.DatabaseRecord例如,

connection = new SqlConnection(
    ConfigurationManager.ConnectionStrings["ConnectionName"].ConnectionString
);
Run Code Online (Sandbox Code Playgroud)

然后我打电话Open(),并Close()在该SQLConnection在我的方法,其访问数据库的开头和结尾.这对我来说(作为熟悉编程但对c#和.net不熟悉的人)是最有效的做事方式 - 有一个连接并在课堂上必要时打开/关闭它.

我刚刚做了一些阅读,似乎在许多地方推荐这种模式:

using (var connection = new SqlConnection(...)) {
    connection.Open();
    // Stuff with the connection
    connection.Close();
}
Run Code Online (Sandbox Code Playgroud)

我可以看到为什么它是可取的 - Dispose()即使您在中间执行的操作导致未捕获的异常,连接也会自动进行.我只是想知道new SqlConnection()像这样可能多次调用的开销是多少.

连接池已启用,因此我认为开销很小,第二种方法应该是最佳实践,但我只是想确保我的假设是正确的.

Hen*_*man 8

是的,这是最好的做法.将using让你调用close()异常安全.

创建(任何)对象的开销确实是最小的,对于短期对象(保留在GC生成0中)最小.

请注意,您不必再在using-block的末尾调用Close(),它会自动为您完成(Dispose == Close).