Ошибка MSSqlServer: транзакция завершена - PullRequest
0 голосов
/ 15 мая 2018

Я получаю сообщение об ошибке при попытке работать с транзакциями. Без этого все работает нормально, но с этим я получаю странную ошибку: транзакция завершена и больше не может быть использована (мой перевод ошибки)

Вот мой код до ошибки:

using (var conn = new SqlConnection(gl.constr))
{
    using (SqlCommand cm = new SqlCommand())
    {
        conn.Open();
        using (SqlTransaction tr = conn.BeginTransaction())
        {
            try
            {
                cm.Connection = conn;
                cm.Transaction = tr;
                cm.CommandText = "INSERT INTO Bookings (Time, Price, BookingRef, BookingInternalRef)" +
                                  " VALUES(" +
                                  "getdate(), "+ sPrice + ", " + 
                                  db.AddAphens(reference) + ", " +
                                  db.AddAphens(internalBookref) +
                                  ")";
                cm.ExecuteNonQuery();  //this works
                tr.Commit();

При коммите всплывающее окно с ошибкой.

1 Ответ

0 голосов
/ 15 мая 2018

Вам не нужно явное объявление транзакции SqlTransaction tr = conn.BeginTransaction() для отдельной операции DML, поскольку каждая операция DML будет неявно привязана к транзакции. Таким образом, вы можете полностью удалить декларацию транзакции, и она должна нормально работать

...