Меня интересует следующий шаблон кода:
static SqlConnection getcon()
{
SqlConnection con = new SqlConnection("data source=foobar..");
con.Open();
// is con Disposed automatically or will it leak and live
// forever when exception is thrown?
throw new Exception("exception");
return con;
}
static void Main(string[] args)
{
try
{
using (var scope = new TransactionScope())
using (var con = getcon())
using (var cmd = new SqlCommand("UPDATE SomeTable SET Column1 = 'test'", con))
{
cmd.ExecuteNonQuery();
scope.Complete();
}
}
catch
{
}
}
Это безопасный способ использования SqlConnection
(получение соединения с помощью метода getcon()
)? Будет ли он удален после выхода из функции при возникновении исключения или будет жить вечно?
Цель, почему мне нужен этот GetCon()
метод, - сократить код и заключить создание и открытие соединения в одну строку (using (var con = getcon())
..)
conn.Open()
), кажется очень ошибочной и преждевременной оптимизацией - не делайте этого. Просто оно того не стоит. - person marc_s   schedule 06.08.2013