Exemplo n.º 1
0
        /// <summary>
        /// Executes the body of a multi-statement transaction.
        /// </summary>
        /// <param name="transactionBody">The code to execute within the transaction</param>
        void Exec(Action transactionBody)
        {
            bool connectionCreated = false;

            try
            {
                if (Transaction == null)
                {
                    lock (this)
                    {
                        if (Transaction == null)
                        {
                            Transaction       = CreateCommandFactory(false);
                            connectionCreated = true;
                        }
                    }
                }

                transactionBody();
            }

            finally
            {
                if (connectionCreated)
                {
                    Transaction.Complete();
                    Transaction = null;
                }
            }
        }
 public ValuesController(IQueryBuilder queryBuilder,
                         IDbConnectionFactory connectionFactory,
                         IDbCommandFactory commandFactory)
 {
     _queryBuilder      = queryBuilder;
     _connectionFactory = connectionFactory;
     _commandFactory    = commandFactory;
 }
Exemplo n.º 3
0
 public GenericRepository(DbContext context, IDbCommandExecutionService dbCommandExecutionService,
                          IDbCommandFactory dbCommandFactory)
 {
     this.context = context;
     this.dbSet   = context.Set <TEntity>();
     this.dbCommandExecutionService = dbCommandExecutionService;
     this.dbCommandFactory          = dbCommandFactory;
 }
Exemplo n.º 4
0
 /// <summary>
 /// Executes an INSERT, UPDATE, or DELETE statement.
 /// </summary>
 /// <param name="sql">The SQL to execute</param>
 /// <returns>
 /// The number of rows affected by the statement
 /// </returns>
 internal int ExecuteNonQuery(string sql)
 {
     using (IDbCommandFactory c = GetCommandFactory())
         using (IDbCommand cmd = c.GetCommand(sql))
         {
             return(cmd.ExecuteNonQuery());
         }
 }
Exemplo n.º 5
0
        public static void Create(string connectionString, IDbCommandFactory commandFactory)
        {
            var sqlCommandTexts = ReadCreateDatabaseCommands();

            var commands = sqlCommandTexts.Select(commandFactory.CreateCommand);

            var sqlCommandExecutor = new DbCommandExecutor(new NullSqlCommandLogger(), commandFactory);
            sqlCommandExecutor.ExecuteNonQuery(commands, connectionString);
        }
Exemplo n.º 6
0
        public static void Create(string connectionString, IDbCommandFactory commandFactory)
        {
            var sqlCommandTexts = ReadCreateDatabaseCommands();

            var commands = sqlCommandTexts.Select(commandFactory.CreateCommand);

            var sqlCommandExecutor = new DbCommandExecutor(new NullSqlCommandLogger(), commandFactory);

            sqlCommandExecutor.ExecuteNonQuery(commands, connectionString);
        }
Exemplo n.º 7
0
        public void AppendTo(DbCommand command, IDbCommandFactory commandFactory)
        {
            if (IsEmpty)
            {
                return;
            }

            command.CommandText += " " + CommandString;

            AppendParameters(command, commandFactory);
        }
Exemplo n.º 8
0
        public void AppendTo(DbCommand command, IDbCommandFactory commandFactory)
        {
            if (IsEmpty)
            {
                return;
            }

            command.CommandText += " " + CommandString;

            AppendParameters(command, commandFactory);
        }
Exemplo n.º 9
0
 /// <summary>
 /// Executes a query
 /// </summary>
 /// <typeparam name="T">The type of data produced by the query.</typeparam>
 /// <param name="query">The query to be executed</param>
 /// <returns>The rows (if any) that satisfy the query</returns>
 /// <seealso cref="ExecuteSelect"/>
 internal IEnumerable <T> ExecuteQuery <T>(IDataQuery <T> query)
 {
     using (IDbCommandFactory c = GetCommandFactory())
         using (IDbCommand cmd = c.GetCommand(query.Text))
             using (IDataReader reader = cmd.ExecuteReader())
             {
                 while (reader.Read())
                 {
                     yield return(query.CreateInstance(reader));
                 }
             }
 }
Exemplo n.º 10
0
        private void InsertAtMarker(DbCommand command, string marker, IDbCommandFactory commandFactory, string prefix)
        {
            if (IsEmpty)
            {
                command.CommandText = command.CommandText.Replace(marker, "");
                return;
            }

            command.CommandText = command.CommandText.Replace(marker, prefix + CommandString);

            AppendParameters(command, commandFactory);
        }
Exemplo n.º 11
0
        private void InsertAtMarker(DbCommand command, string marker, IDbCommandFactory commandFactory, string prefix)
        {
            if (IsEmpty)
            {
                command.CommandText = command.CommandText.Replace(marker, "");
                return;
            }

            command.CommandText = command.CommandText.Replace(marker, prefix + CommandString);

            AppendParameters(command, commandFactory);
        }
Exemplo n.º 12
0
        public DatabaseContextFactory(IDbConnectionFactory dbConnectionFactory, IDbCommandFactory dbCommandFactory, IDatabaseContextCache databaseContextCache)
        {
            Guard.AgainstNull(dbConnectionFactory, "dbConnectionFactory");
            Guard.AgainstNull(dbCommandFactory, "dbCommandFactory");
            Guard.AgainstNull(databaseContextCache, "databaseContextCache");

            _dbConnectionFactory  = dbConnectionFactory;
            _dbCommandFactory     = dbCommandFactory;
            _databaseContextCache = databaseContextCache;

            DatabaseContext.Assign(databaseContextCache);
        }
        public DatabaseConnectionFactory(IDbConnectionFactory dbConnectionFactory, IDbCommandFactory dbCommandFactory,
		                                 IDatabaseConnectionCache databaseConnectionCache)
        {
            Guard.AgainstNull(dbConnectionFactory, "dbConnectionFactory");
            Guard.AgainstNull(dbCommandFactory, "dbCommandFactory");
            Guard.AgainstNull(databaseConnectionCache, "databaseConnectionCache");

            _dbConnectionFactory = dbConnectionFactory;
            _databaseConnectionCache = databaseConnectionCache;
            _dbCommandFactory = dbCommandFactory;

            _log = Log.For(this);
        }
Exemplo n.º 14
0
        /// <summary>
        /// Executes a query that is expected to return no more than one row.
        /// </summary>
        /// <typeparam name="T">The type of data in the query field.</typeparam>
        /// <param name="sql">The query text</param>
        /// <param name="defaultValue">The default value to be returned in cases
        /// where nothing was found, or a database null was found.</param>
        /// <returns>The selected value (or <paramref name="defaultValue"/> if not found)</returns>
        /// <remarks>There is no error if the select actually relates to multiple rows
        /// (in that case, you just get the first row that was selected).</remarks>
        /// <seealso cref="ExecuteQuery"/>
        internal T ExecuteSelect <T>(string sql, T defaultValue = default(T)) where T : IConvertible
        {
            using (IDbCommandFactory c = GetCommandFactory())
                using (IDbCommand cmd = c.GetCommand(sql))
                {
                    object o = cmd.ExecuteScalar();

                    if (o == null || o == DBNull.Value)
                    {
                        return(defaultValue);
                    }

                    return((T)Convert.ChangeType(o, typeof(T)));
                }
        }
        public DataStoreDatabaseContextFactory(
            IConnectionConfigurationProvider connectionConfigurationProvider,
            IDbConnectionFactory dbConnectionFactory,
            IDbCommandFactory dbCommandFactory,
            IDatabaseContextCache databaseContextCache,
            IDataStoreQuery dataStoreQuery)
            : base(
                connectionConfigurationProvider,
                dbConnectionFactory,
                dbCommandFactory,
                databaseContextCache)
        {
            Guard.AgainstNull(dataStoreQuery, nameof(dataStoreQuery));

            _dataStoreQuery = dataStoreQuery;
        }
Exemplo n.º 16
0
        public void SetUp()
        {
            _commandFactory = Substitute.For <IDbCommandFactory>();
            _logger         = Substitute.For <ISqlCommandLogger>();
            _executor       = new DbCommandExecutor(_logger, _commandFactory);

            _command    = new TestDbCommand();
            _connection = new TestDbConnection();

            _command.StubScalarResult = 1;
            _command.StubDataReader   = new TestDbDataReader()
            {
                ResultSet = new ResultSet(new[] { new Row(new[] { new ColumnValue("Id", 1), }), })
            };
            _commandFactory.CreateConnection().Returns(_connection);
        }
Exemplo n.º 17
0
        public DatabaseConnection(DataSource dataSource, IDbConnection connection, IDbCommandFactory dbCommandFactory, 
            IDatabaseConnectionCache databaseConnectionCache, bool ownedConnection = true, IDbTransaction currentTransaction = null)
        {
            Guard.AgainstNull(dataSource, "dataSource");
            Guard.AgainstNull(connection, "connection");
            Guard.AgainstNull(dbCommandFactory, "dbCommandFactory");
            Guard.AgainstNull(databaseConnectionCache, "databaseConnectionCache");

            _dataSource = dataSource;
            _dbCommandFactory = dbCommandFactory;
            _databaseConnectionCache = databaseConnectionCache;

            Connection = connection;
            _ownedConnection = ownedConnection;
            Transaction = currentTransaction;
            _ownedTransaction = currentTransaction == null;

            _log = Log.For(this);

            _log.Verbose(string.Format(DataResources.DbConnectionCreated, dataSource.Name));

            try
            {
                if (connection.State == ConnectionState.Closed)
                {
                    Connection.Open();
                    _log.Verbose(string.Format(DataResources.DbConnectionOpened, dataSource.Name));
                }
                else
                {
                    _log.Verbose(string.Format(DataResources.DbConnectionAlreadyOpen, dataSource.Name));
                }
            }
            catch (Exception ex)
            {
                _log.Error(string.Format(DataResources.DbConnectionOpenException, dataSource.Name, ex.Message));

                throw;
            }

            databaseConnectionCache.Add(dataSource, this);
        }
Exemplo n.º 18
0
        public DatabaseContext(IDbConnection dbConnection, IDbCommandFactory dbCommandFactory)
        {
            Guard.AgainstNull(dbConnection, "dbConnection");
            Guard.AgainstNull(dbCommandFactory, "dbCommandFactory");

            _dbCommandFactory = dbCommandFactory;
            _dispose          = true;

            Key = Guid.NewGuid();

            Connection = dbConnection;

            var log = Log.For(this);

            try
            {
                if (dbConnection.State == ConnectionState.Closed)
                {
                    Connection.Open();

                    log.Verbose(string.Format(DataResources.VerboseDbConnectionOpened, dbConnection.Database));
                }
                else
                {
                    log.Verbose(string.Format(DataResources.VerboseDbConnectionAlreadyOpen, dbConnection.Database));
                }
            }
            catch (Exception ex)
            {
                log.Error(string.Format(DataResources.DbConnectionOpenException, dbConnection.Database, ex.Message));

                throw;
            }

            GuardedDatabaseContextStore().Add(this);
        }
Exemplo n.º 19
0
 public TSqlGenerator CreateSqlGenerator(IDbCommandFactory dbCommandFactory)
 {
     return new SqlCe4TSqlGenerator(dbCommandFactory);
 }
Exemplo n.º 20
0
 public AdminRepository(IDbCommandExecutionService dbCommandExecutionService,
                        IDbCommandFactory dbCommandFactory)
 {
     _dbCommandExecutionService = dbCommandExecutionService;
     _dbCommandFactory          = dbCommandFactory;
 }
Exemplo n.º 21
0
 public abstract IDbCommand CreateLastInsertIdCommand(string tableName, IDbCommandFactory commandFactory);
Exemplo n.º 22
0
 public override IDbCommand CreateLastInsertIdCommand(string tableName, IDbCommandFactory commandFactory)
 {
     return commandFactory.Create(null, "SELECT last_insert_rowid()");
 }
Exemplo n.º 23
0
 public void InsertWithSpaceAtMarker(DbCommand command, string marker, IDbCommandFactory commandFactory)
 {
     InsertAtMarker(command, marker, commandFactory, " ");
 }
Exemplo n.º 24
0
 public UnitOfWork(ContextClass context, IDbCommandExecutionService dbCommandExecutionService, IDbCommandFactory dbCommandFactory)
 {
     this.context = context;
     this.dbCommandExecutionService = dbCommandExecutionService;
     this.dbCommandFactory          = dbCommandFactory;
 }
Exemplo n.º 25
0
 public override IDbCommand CreateLastInsertIdCommand(string tableName, IDbCommandFactory commandFactory)
 {
     return commandFactory.Create(null, "SELECT LAST_INSERT_ID() FROM " + tableName);
 }
Exemplo n.º 26
0
 /// <summary>
 /// Creates a new instance of <see cref="SqlDatabase"/>
 /// </summary>
 /// <param name="connectionString">The database connection string.</param>
 /// <exception cref="ArgumentNullException">The supplied connection string is undefined</exception>
 protected SqlDatabase(string connectionString)
 {
     ConnectionString = connectionString ?? throw new ArgumentNullException(nameof(ConnectionString));
     Transaction      = null;
 }
Exemplo n.º 27
0
 public DatabaseWrapper(IDbCommandFactory commandFactory)
 {
     this.commandFactory = commandFactory;
 }
Exemplo n.º 28
0
 public SqlCeTSqlGenerator(IDbCommandFactory commandFactory) : base(commandFactory)
 {
     _commandFactory = commandFactory;
 }
Exemplo n.º 29
0
 public override IDbCommand CreateGetTableMetadataCommand(string tableName, IDbCommandFactory commandFactory)
 {
     return null;
 }
Exemplo n.º 30
0
 public TransactionScope(IDbCommandFactory commandFactory, TransactionReference transaction, ConnectionScope connectionScope)
 {
     _commandFactory = commandFactory;
     Transaction     = transaction;
     ConnectionScope = connectionScope;
 }
Exemplo n.º 31
0
        public void SetUp()
        {
            _commandFactory = Substitute.For<IDbCommandFactory>();
            _logger = Substitute.For<ISqlCommandLogger>();
            _executor = new DbCommandExecutor(_logger, _commandFactory);

            _command = new TestDbCommand();
            _connection = new TestDbConnection();

            _command.StubScalarResult = 1;
            _command.StubDataReader = new TestDbDataReader() { ResultSet = new ResultSet(new[] { new Row(new[] { new ColumnValue("Id", 1), }), }) };
            _commandFactory.CreateConnection().Returns(_connection);
        }
Exemplo n.º 32
0
 public override IDbCommand CreateGetTableMetadataCommand(string tableName, IDbCommandFactory commandFactory)
 {
     var parameters = new[] { new Parameter("tableName", tableName) };
     var sql = string.Format("SELECT * FROM `information_schema`.`COLUMNS` WHERE `TABLE_NAME` = {0}tableName", parameterPrefix);
     return commandFactory.Create(parameters, sql);
 }
Exemplo n.º 33
0
 public SqlCe4TSqlGenerator(IDbCommandFactory commandFactory)
     : base(commandFactory)
 {
     _commandFactory = commandFactory;
 }
Exemplo n.º 34
0
 public ConnectionScope(IDbCommandFactory dbCommandFactory, DbConnection connection)
 {
     Connection        = connection;
     _dbCommandFactory = dbCommandFactory;
 }
Exemplo n.º 35
0
        private void AppendParameters(DbCommand command, IDbCommandFactory commandFactory)
        {
            var dbParameters = CommandParameters.Select(commandFactory.CreateParameter).ToArray();

            command.Parameters.AddRange(dbParameters);
        }
 public TSqlGenerator CreateSqlGenerator(IDbCommandFactory dbCommandFactory)
 {
     throw new System.NotImplementedException();
 }
Exemplo n.º 37
0
 public override IDbCommand CreateLastInsertIdCommand(string tableName, IDbCommandFactory commandFactory)
 {
     return commandFactory.Create(null, "select @@identity");
 }
Exemplo n.º 38
0
 public abstract IDbCommand CreateGetTableMetadataCommand(string tableName, IDbCommandFactory commandFactory);
Exemplo n.º 39
0
 public static IDbCommandFactory CommandFactory(IDbCommandFactory commandFactory)
 {
     return(commandFactory);
 }
Exemplo n.º 40
0
 public override IDbCommand CreateGetTableMetadataCommand(string tableName, IDbCommandFactory commandFactory)
 {
     var parameters = new[] { new Parameter("tableName", tableName) };
     var sql = string.Format("select * from information_schema.columns where table_name = {0}tableName", parameterPrefix);
     return commandFactory.Create(parameters, sql);
 }
Exemplo n.º 41
0
 public TSqlGenerator CreateSqlGenerator(IDbCommandFactory dbCommandFactory)
 {
     return(new TSqlGenerator(dbCommandFactory));
 }
Exemplo n.º 42
0
 public StockAppUnitOfWork(StockAppContext context, IDbCommandExecutionService dbCommandExecutionService, IDbCommandFactory dbCommandFactory)
 {
     _context = context;
     _dbCommandExecutionService = dbCommandExecutionService;
     _dbCommandFactory = dbCommandFactory;
 }
Exemplo n.º 43
0
 public ConnectionScope(IDbCommandFactory dbCommandFactory, DbConnection connection)
 {
     Connection = connection;
     _dbCommandFactory = dbCommandFactory;
 }
Exemplo n.º 44
0
 public TSqlGenerator(IDbCommandFactory commandFactory)
 {
     _commandFactory = commandFactory;
 }
Exemplo n.º 45
0
 public void InsertWithSpaceAtMarker(DbCommand command, string marker, IDbCommandFactory commandFactory)
 {
     InsertAtMarker(command, marker, commandFactory, " ");
 }
Exemplo n.º 46
0
 private void AppendParameters(DbCommand command, IDbCommandFactory commandFactory)
 {
     var dbParameters = CommandParameters.Select(commandFactory.CreateParameter).ToArray();
     command.Parameters.AddRange(dbParameters);
 }
Exemplo n.º 47
0
 public override IDbCommand CreateLastInsertIdCommand(string tableName, IDbCommandFactory commandFactory)
 {
     return null;
 }
Exemplo n.º 48
0
 public DbCommandExecutor(ISqlCommandLogger sqlCommandLogger, IDbCommandFactory commandFactory)
 {
     _sqlCommandLogger = sqlCommandLogger;
     _commandFactory   = commandFactory;
 }
Exemplo n.º 49
0
 public TSqlGenerator CreateSqlGenerator(IDbCommandFactory dbCommandFactory)
 {
     throw new System.NotImplementedException();
 }
Exemplo n.º 50
0
 public TransactionScope(IDbCommandFactory commandFactory, TransactionReference transaction, ConnectionScope connectionScope)
 {
     _commandFactory = commandFactory;
     Transaction = transaction;
     ConnectionScope = connectionScope;
 }
Exemplo n.º 51
0
 public DbCommandGenerator(ITableMetadataProvider tableMetadataProvider, IDbCommandFactory commandFactory)
 {
     this.TableMetadataProvider = tableMetadataProvider;
     this.CommandFactory        = commandFactory;
 }
Exemplo n.º 52
0
 public StockDataUnitOfWork(StockDataContext context, IDbCommandExecutionService dbCommandExecutionService, IDbCommandFactory dbCommandFactory)
 {
     _context = context;
     _dbCommandExecutionService = dbCommandExecutionService;
     _dbCommandFactory          = dbCommandFactory;
 }
Exemplo n.º 53
0
 public ShopOwnerRepository(IDbCommandExecutionService dbCommandExecutionService,
                            IDbCommandFactory dbCommandFactory)
 {
     _dbCommandExecutionService = dbCommandExecutionService;
     _dbCommandFactory          = dbCommandFactory;
 }