diff --git a/Database/Adapters/MSSQLServer.vb b/Database/Adapters/MSSQLServer.vb index 44ef40f7..344bb3c8 100644 --- a/Database/Adapters/MSSQLServer.vb +++ b/Database/Adapters/MSSQLServer.vb @@ -109,29 +109,31 @@ Public Class MSSQLServer End Try End Function - Private Function MaybeGetTransaction(Connection As SqlConnection, Mode As TransactionMode, Transaction As SqlTransaction) As SqlTransaction - If Connection Is Nothing Then + Private Function MaybeGetTransaction(pConnection As SqlConnection, pTransactionMode As TransactionMode, pTransaction As SqlTransaction) As SqlTransaction + If pConnection Is Nothing Then Throw New ArgumentNullException("Connection", "Could not get transaction because connection is null!") End If - If Mode = TransactionMode.NoTransaction Then + Logger.Debug("Transaction Mode: [{0}]", pTransactionMode.ToString) + + If pTransactionMode = TransactionMode.NoTransaction Then Return Nothing - ElseIf Mode = TransactionMode.ExternalTransaction Then - Return Transaction + ElseIf pTransactionMode = TransactionMode.ExternalTransaction Then + Return pTransaction Else - Return Connection.BeginTransaction() + Return pConnection.BeginTransaction() End If End Function - Private Function MaybeCommitTransaction(Transaction As SqlTransaction, TransactionMode As TransactionMode) As Boolean - Select Case TransactionMode + Private Function MaybeCommitTransaction(pTransaction As SqlTransaction, pTransactionMode As TransactionMode) As Boolean + Select Case pTransactionMode Case TransactionMode.NoTransaction Return True Case TransactionMode.ExternalTransaction Return True Case TransactionMode.WithTransaction Try - Transaction.Commit() + pTransaction.Commit() Return True Catch ex As Exception Logger.Warn("Error while committing transaction!") @@ -225,15 +227,15 @@ Public Class MSSQLServer ''' ''' This Function intentionally has no try..catch block to have any errors caught outside ''' - ''' + ''' ''' - Private Function OpenSQLConnection(Connection As SqlConnection) As SqlConnection + Private Function OpenSQLConnection(pConnection As SqlConnection) As SqlConnection Try - If Connection.State = ConnectionState.Closed Then - Connection.Open() + If pConnection.State = ConnectionState.Closed Then + pConnection.Open() End If - Return Connection + Return pConnection Catch ex As Exception Logger.Error("Error while opening Connection!") Logger.Error(ex) @@ -333,6 +335,20 @@ Public Class MSSQLServer End Using End Function + Public Async Function GetDatatableWithConnectionObjectAsync(pSqlCommand As String, pSqlConnection As SqlConnection, + Optional pTransactionMode As TransactionMode = TransactionMode.WithTransaction, + Optional pTransaction As SqlTransaction = Nothing, + Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable) + Return Await Task.Run(Function() GetDatatableWithConnectionObject(pSqlCommand, pSqlConnection, pTransactionMode, pTransaction, pTimeout)) + End Function + + Public Async Function GetDatatableWithConnectionObjectAsync(pSqlCommandObject As SqlCommand, pSqlConnection As SqlConnection, + Optional pTransactionMode As TransactionMode = TransactionMode.WithTransaction, + Optional pTransaction As SqlTransaction = Nothing, + Optional pTimeout As Integer = Constants.DEFAULT_TIMEOUT) As Task(Of DataTable) + Return Await Task.Run(Function() GetDatatableWithConnectionObject(pSqlCommandObject, pSqlConnection, pTransactionMode, pTransaction, pTimeout)) + End Function + Public Function GetDatatableWithConnectionObject(pSqlCommand As String, pSqlConnection As SqlConnection, Optional pTransactionMode As TransactionMode = TransactionMode.WithTransaction, Optional pTransaction As SqlTransaction = Nothing,