using System; using System.Data; using Ease.Core.DataAccess.SQL; //using Ease.Core.DataAccess.Odbc; //using Ease.Core.DataAccess.OleDb; using Ease.Core.DataAccess.Oracle; namespace Ease.Core.DataAccess { #region DataAccess: Transaction Helper Factory public abstract class TransactionFactory { #region Default Helper private static TransactionFactory _default; public static TransactionFactory Default { get { if (_default == null) { #region Default TransactionHelper switch (ConnectionFactory.Provider) { case Provider.Sql: _default = new SqlHelper(); break; case Provider.Oracle: //_default = new OracleHelper(); break; case Provider.OleDb: //_default = new OleDbHelper(); break; case Provider.Odbc: //_default = new OdbcHelper(); break; default: break; } #endregion } return _default; } } #endregion #region Context Helper public static TransactionFactory ContextTransactionHelper(ConnectionContext context) { TransactionFactory ctxFactory; switch (ConnectionFactory.Provider) { //case Provider.Oracle: // ctxFactory = new OracleHelper(); // break; //case Provider.OleDb: // ctxFactory = new OleDbHelper(); // break; //case Provider.Odbc: // ctxFactory = new OdbcHelper(); // break; default: ctxFactory = new SqlHelper(); break; } return ctxFactory; } #endregion #region Execute NonQuery public abstract int ExecuteNonQuery(int commandTimeout, string connectionString, CommandType commandType, string commandText); public abstract int ExecuteNonQuery(int commandTimeout, string connectionString, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract int ExecuteNonQuery(int commandTimeout, string connectionString, string spName, params object[] parameterValues); public abstract int ExecuteNonQuery(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText); public abstract int ExecuteNonQuery(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract int ExecuteNonQuery(int commandTimeout, IDbConnection connection, string spName, params object[] parameterValues); public abstract int ExecuteNonQuery(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText); public abstract int ExecuteNonQuery(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract int ExecuteNonQuery(int commandTimeout, IDbTransaction transaction, string spName, params object[] parameterValues); #endregion ExecuteNonQuery #region Execute DataTable public abstract DataTable ExecuteDataTable(int commandTimeout, string connectionString, CommandType commandType, string commandText); public abstract DataTable ExecuteDataTable(int commandTimeout, string connectionString, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract DataTable ExecuteDataTable(int commandTimeout, string connectionString, string spName, params object[] parameterValues); public abstract DataTable ExecuteDataTable(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText); public abstract DataTable ExecuteDataTable(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract DataTable ExecuteDataTable(int commandTimeout, IDbConnection connection, string spName, params object[] parameterValues); public abstract DataTable ExecuteDataTable(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText); public abstract DataTable ExecuteDataTable(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract DataTable ExecuteDataTable(int commandTimeout, IDbTransaction transaction, string spName, params object[] parameterValues); #endregion ExecuteDataTable #region Execute Dataset public abstract DataSet ExecuteDataset(int commandTimeout, string connectionString, CommandType commandType, string commandText); public abstract DataSet ExecuteDataset(int commandTimeout, string connectionString, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract DataSet ExecuteDataset(int commandTimeout, string connectionString, string spName, params object[] parameterValues); public abstract DataSet ExecuteDataset(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText); public abstract DataSet ExecuteDataset(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract DataSet ExecuteDataset(int commandTimeout, IDbConnection connection, string spName, params object[] parameterValues); public abstract DataSet ExecuteDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText); public abstract DataSet ExecuteDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract DataSet ExecuteDataset(int commandTimeout, IDbTransaction transaction, string spName, params object[] parameterValues); #endregion ExecuteDataset #region Execute Reader private enum IDbConnectionOwnership { /// Connection is owned and managed by OleDbHelper Internal, /// Connection is owned and managed by the caller External } public abstract IDataReader ExecuteReader(int commandTimeout, string connectionString, CommandType commandType, string commandText); public abstract IDataReader ExecuteReader(int commandTimeout, string connectionString, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract IDataReader ExecuteReader(int commandTimeout, string connectionString, string spName, params object[] parameterValues); public abstract IDataReader ExecuteReader(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText); public abstract IDataReader ExecuteReader(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract IDataReader ExecuteReader(int commandTimeout, IDbConnection connection, string spName, params object[] parameterValues); public abstract IDataReader ExecuteReader(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText); public abstract IDataReader ExecuteReader(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract IDataReader ExecuteReader(int commandTimeout, IDbTransaction transaction, string spName, params object[] parameterValues); #endregion ExecuteReader #region Execute Scalar public abstract object ExecuteScalar(int commandTimeout, string connectionString, CommandType commandType, string commandText); public abstract object ExecuteScalar(int commandTimeout, string connectionString, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract object ExecuteScalar(int commandTimeout, string connectionString, string spName, params object[] parameterValues); public abstract object ExecuteScalar(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText); public abstract object ExecuteScalar(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract object ExecuteScalar(int commandTimeout, IDbConnection connection, string spName, params object[] parameterValues); public abstract object ExecuteScalar(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText); public abstract object ExecuteScalar(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText, params IDataParameter[] commandParameters); public abstract object ExecuteScalar(int commandTimeout, IDbTransaction transaction, string spName, params object[] parameterValues); #endregion ExecuteScalar #region FillDataset public abstract void FillDataset(int commandTimeout, string connectionString, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames); public abstract void FillDataset(int commandTimeout, string connectionString, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames, params IDataParameter[] commandParameters); public abstract void FillDataset(int commandTimeout, string connectionString, string spName, DataSet dataSet, string[] tableNames, params object[] parameterValues); public abstract void FillDataset(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames); public abstract void FillDataset(int commandTimeout, IDbConnection connection, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames, params IDataParameter[] commandParameters); public abstract void FillDataset(int commandTimeout, IDbConnection connection, string spName, DataSet dataSet, string[] tableNames, params object[] parameterValues); public abstract void FillDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames); public abstract void FillDataset(int commandTimeout, IDbTransaction transaction, CommandType commandType, string commandText, DataSet dataSet, string[] tableNames, params IDataParameter[] commandParameters); public abstract void FillDataset(int commandTimeout, IDbTransaction transaction, string spName, DataSet dataSet, string[] tableNames, params object[] parameterValues); #endregion #region Update Dataset public abstract void UpdateDataset(IDbCommand insertCommand, IDbCommand deleteCommand, IDbCommand updateCommand, DataSet dataSet, string tableName); #endregion #region Create Command public abstract IDbCommand CreateCommand(IDbConnection connection, string spName, params string[] sourceColumns); #endregion #region Execute NonQuery TypedParams public abstract int ExecuteNonQueryTypedParams(int commandTimeout, string connectionString, string spName, DataRow dataRow); public abstract int ExecuteNonQueryTypedParams(int commandTimeout, IDbConnection connection, string spName, DataRow dataRow); public abstract int ExecuteNonQueryTypedParams(int commandTimeout, IDbTransaction transaction, string spName, DataRow dataRow); #endregion #region Execute Dataset TypedParams public abstract DataSet ExecuteDatasetTypedParams(int commandTimeout, string connectionString, string spName, DataRow dataRow); public abstract DataSet ExecuteDatasetTypedParams(int commandTimeout, IDbConnection connection, string spName, DataRow dataRow); public abstract DataSet ExecuteDatasetTypedParams(int commandTimeout, IDbTransaction transaction, string spName, DataRow dataRow); #endregion #region Execute Reader TypedParams public abstract IDataReader ExecuteReaderTypedParams(int commandTimeout, string connectionString, string spName, DataRow dataRow); public abstract IDataReader ExecuteReaderTypedParams(int commandTimeout, IDbConnection connection, string spName, DataRow dataRow); public abstract IDataReader ExecuteReaderTypedParams(int commandTimeout, IDbTransaction transaction, string spName, DataRow dataRow); #endregion #region Execute Scalar TypedParams public abstract object ExecuteScalarTypedParams(int commandTimeout, string connectionString, string spName, DataRow dataRow); public abstract object ExecuteScalarTypedParams(int commandTimeout, IDbConnection connection, string spName, DataRow dataRow); public abstract object ExecuteScalarTypedParams(int commandTimeout, IDbTransaction transaction, string spName, DataRow dataRow); #endregion } #endregion }