public virtual void Dispose() { if (_disposing) { return; } _disposing = true; _client.EndTransaction(); if (!_markCommitted && Committable && TransactionContext.IsOpen) { Rollback(); } if (_transactionContext != null && ShouldDisposeTransaction()) { _transactionContext.Dispose(); _transactionContext = null; } }