/// <summary>
 /// Rollbacks the transaction to the database and closes the connection.
 /// </summary>
 /// <param name="transaction">The transaction.</param>
 public static void RollbackTransaction(RepositoryTransaction transaction)
 {
     try
     {
         if (transaction != null && transaction.Transaction != null)
         {
             transaction.Transaction.Rollback();
             transaction.Transaction.Dispose();
         }
     }
     catch (Exception e)
     {
         throw new RepositoryException("BaseRepository::RollbackTransaction: Unable to rollback transaction", e);
     }
 }
 /// <summary>
 /// Opens a Simple.Data connection.
 /// </summary>
 /// <returns></returns>
 internal static Simple.Data.DataStrategy OpenConnection(RepositoryTransaction transaction = null)
 {
     try
     {
         return transaction != null ? transaction.Transaction : Simple.Data.Database.OpenConnection(ActiveConnection.ConnectionString, ActiveConnection.Provider);
     }
     catch (Exception e)
     {
         throw new RepositoryException($"Unable to open connection: {ActiveConnection?.ConnectionString ?? string.Empty} provider: {ActiveConnection?.Provider ?? string.Empty}", e);
     }
 }
 /// <summary>
 /// Commits the transaction to the database, and closes the connection.
 /// </summary>
 /// <param name="transaction">The transaction.</param>
 public static void CommitTransaction(RepositoryTransaction transaction)
 {
     try
     {
         transaction.Transaction.Commit();
         transaction.Transaction.Dispose();
     }
     catch (Exception e)
     {
         throw new RepositoryException("BaseRepository::CommitTransaction: Unable to commit transaction", e);
     }
 }