Нужно ли держать (одно и то же) соединение SQL открытым в течение транзакции, и нужно ли вам вызывать CommitTransaction и RollbackTransaction для того же соединения, которое вызвало BeginTransaction.
У нас есть вспомогательный класс базы данных с методами для начала-совершения-откатывания транзакций, а также обычного выбора, выполнения сохраненной процедуры и т. Д.
Вспомогательный класс выглядит примерно так:
public class DatabaseHelper
{
public void BeginTransaction()
{
// open connection, but dont close it.
}
public void CommitTransaction()
{
// close the connection
}
public void RollbackTransaction()
{
// close the connection
}
Так что из-за этого мы НЕ МОЖЕМ сделать обычное (что я бы предпочел), например:
using (sqlCon = new SqlConnection(connectionString))
{
// sql operations here
}
Вспомогательный класс в настоящее время оставляет соединение открытым, пока существует существующая транзакция, и закрывает его во время фиксации или отката. Однако это заставило меня задуматься, действительно ли это лучший способ сделать это? Должно ли соединение оставаться открытым в течение всей транзакции?