internal void RollbackImplicitTransaction() { if (HasImplicitTransaction && _transaction != null && _transaction.Transaction != null) { var transactionCount = Connection.InnerConnection.Database.TransactionCount; try { _transaction.Rollback(); } catch { if (Connection.InnerConnection.Database.TransactionCount == transactionCount) { Connection.InnerConnection.Database.TransactionCount--; } } finally { _transaction.Dispose(); _transaction = null; _implicitTransaction = false; if (_statement != null) { _statement.Transaction = null; } } } }
public void Rollback(Enlistment enlistment) { if (_transaction != null && !_transaction.IsUpdated) { _transaction.Rollback(); _transaction = null; if (Completed != null) { Completed(this, new EventArgs()); } if (_connection != null) { if (!_connection.Options.Pooling && (_connection.OwningConnection == null || _connection.OwningConnection.IsClosed)) { _connection.Disconnect(); } } _connection = null; _systemTransaction = null; // Declare done on the enlistment enlistment.Done(); } }
public void Rollback(Enlistment enlistment) { if (_transaction != null && !_transaction.IsCompleted) { _transaction.Rollback(); _transaction = null; Completed?.Invoke(this, new EventArgs()); if (_connection != null) { if (!_connection.Options.Pooling && (_connection.OwningConnection == null || _connection.OwningConnection.IsClosed)) { _connection.Disconnect(new AsyncWrappingCommonArgs(false)).GetAwaiter().GetResult(); } } _connection = null; _systemTransaction = null; // Declare done on the enlistment enlistment.Done(); } }
private void DataBaseSendData(long IMEI, DateTime dt, int latitude, int longitude, int speed, FbConnection fb) { if ((latitude != 0) && (longitude != 0)) { fbt = fb.BeginTransaction(); using ( var insertSQL = new FbCommand("insert into sms" +"(sms.IMEI, sms.DATE_, sms.TIME_, sms.LATITUDE, sms.LONGITUDE, sms.SPEED) values('"+ IMEI + "','" + dt.ToShortDateString() + "','" + dt.ToLongTimeString() + "','" + latitude + "','" + longitude + "','" + speed + "');", fb)) // using Firebird DB, FBCommand haven't method "AddWithValue". { if (fb.State == ConnectionState.Closed) { fb.Open(); } insertSQL.Transaction = fbt; try { insertSQL.ExecuteNonQueryAsync(); fbt.Commit(); } catch (Exception ex) { fbt.Rollback(); Log.Add(ex.Message + "\r\n" + ex.Source + "\r\n" + ex.TargetSite); } } } }