Ejemplo n.º 1
0
 public async Task <IEnumerable <GameEntity> > GetAsync()
 {
     using (var connection = _connectionFactory.Create())
     {
         return(await connection.QueryAsync <GameEntity>("SELECT * FROM GameData.Games"));
     }
 }
Ejemplo n.º 2
0
        public IEnumerable <Sample> Get()
        {
            var query = new StringBuilder();

            query.Append("SELECT Id, Name, Description FROM Samples");

            using (var connection = connectionFactory.Create())
            {
                return(connection.Query <Sample>(query.ToString()).ToArray());
            }
        }
Ejemplo n.º 3
0
        public void Create_MSSql_Works()
        {
            var config = ConfigurationManager.ConnectionStrings["SqlClientTest"];

            _configSvcMock.ProviderName     = config.ProviderName;
            _configSvcMock.ConnectionString = config.ConnectionString;

            using (var connection = _dbConnFact.Create())
            {
                Assert.IsNotNull(connection);
                Assert.IsInstanceOfType(connection, typeof(SqlConnection));
            }
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Handles providing the connection for use with the command.
 /// </summary>
 /// <param name="action">The handler for use with the connection.</param>
 protected void UsingConnection(Action <TConnection, IDbTransaction> action)
 {
     if (Connection != null)
     {
         action(Connection, Transaction);
     }
     else
     {
         using (var conn = ConnectionFactory.Create())
         {
             action(conn, null);
         }
     }
 }
Ejemplo n.º 5
0
        private async Task <IEnumerable <Event> > GetEventsAsync(string sql, object parm)
        {
            var connection = connectionFactory.Create(ConnectionType.EventSourcing);
            var datas      = await connection.QueryAsync <PersistentObject>(sql, parm);

            var result = datas.Select(data =>
            {
                var json   = data.Event;
                var type   = assembly.GetType(data.EventType);
                var @event = JsonConvert.DeserializeObject(json, type);
                return((Event)@event);
            });

            return(result);
        }
Ejemplo n.º 6
0
        protected IDbConnection OpenConnection()
        {
            var connection = connectionFactory.Create(connectionString);

            connection.Open();
            return(connection);
        }
Ejemplo n.º 7
0
        /// <inheritdoc />
        public IDictionary <string, object> Handle(GetHeaderQuery query)
        {
            using (var connection = _connectionFactory.Create())
            {
                connection.Open();
                using (var command = connection.CreateCommand())
                {
                    _prepareQuery.Handle(query, command, CommandStringTypes.GetHeader);
                    using (var reader = command.ExecuteReader())
                    {
                        if (!reader.Read())
                        {
                            return(null);
                        }
                        var headerRaw = _readColumn.ReadAsByteArray(CommandStringTypes.GetHeader, 0, reader);
                        if (headerRaw != null)
                        {
                            return(_serialization.InternalSerializer
                                   .ConvertBytesTo <IDictionary <string, object> >(
                                       headerRaw));
                        }
                    }
                }
            }

            return(null);
        }
        /// <inheritdoc />
        public QueueRemoveResult Handle(DeleteQueueTablesCommand inputCommand)
        {
            using (var connection = _dbConnectionFactory.Create())
            {
                connection.Open();
                using (var trans = _transactionFactory.Create(connection).BeginTransaction())
                {
                    foreach (var table in _tableNameHelper.Tables)
                    {
                        var delete =
                            _tableExists.Handle(
                                new GetTableExistsTransactionQuery(connection, trans, table));

                        if (!delete)
                        {
                            continue;
                        }

                        using (var commandSql = connection.CreateCommand())
                        {
                            commandSql.Transaction = trans;
                            _prepareDeleteTable.Handle(new DeleteTableCommand(table), commandSql,
                                                       CommandStringTypes.DeleteTable);
                            commandSql.ExecuteNonQuery();
                        }
                    }
                    trans.Commit();
                    return(new QueueRemoveResult(QueueRemoveStatus.Success));
                }
            }
        }
Ejemplo n.º 9
0
        public async Task <Result <BookItem, Error> > LoadAsync(string bookId)
        {
            try
            {
                using var connection = _dbConnectionFactory.Create();
                var sql      = $"SELECT * from books.book_items WHERE book_id = '{bookId}'";
                var bookItem = await connection.QuerySingleOrDefaultAsync <BookItem>(sql);

                return(bookItem == null?Result.Failure <BookItem, Error>(ErrorTypes.FailedLocatingItem(bookId)) : Result.Success <BookItem, Error>(bookItem));
            }
            catch (MySqlException mySqlException)
            {
                _logger.Fatal(mySqlException, "failed loading book: {BookId}", bookId);
                return(Result.Failure <BookItem, Error>(ErrorTypes.FailedLoadingItem(bookId, mySqlException.Number)));
            }
        }
    public List <DropDownOption> CalcSelectDDSizeAndTilesPerBoxAll()
    {
        var options = new List <DropDownOption>();

        try {
            using (IDbConnection connection = connectionFactory.Create(connectionString)) {
                using (IDbCommand command = connection.CreateCommand()) {
                    command.CommandText    = "CalcSelectDDSizeAndTilesPerBoxAll";
                    command.CommandType    = CommandType.StoredProcedure;
                    command.CommandTimeout = 30;
                    connection.Open();
                    using (IDataReader r = command.ExecuteReader(CommandBehavior.CloseConnection)) {
                        while (r.Read())
                        {
                            DropDownOption option = new DropDownOption {
                                value = r["SizeAndNumInBox"].ToString(),
                                text  = r["Descr"].ToString()
                            };
                            options.Add(option);
                        }
                    }
                    LastErrorMsg = string.Empty;
                }
            }
        } catch (Exception ex) {
            LastErrorMsg = ex.Message;
            //consider logging error
            options = new List <DropDownOption>();
        }
        return(options);
    }
Ejemplo n.º 11
0
        private async Task <BaseMemento> GetMementoAsync(string sql, object parm)
        {
            var connection = connectionFactory.Create(ConnectionType.EventSourcing);

            var data = await connection.QueryFirstOrDefaultAsync <PersistentObject>(sql, parm);

            if (data == null)
            {
                return(null);
            }

            var json   = data.Memento;
            var type   = Type.GetType(data.MementoType);
            var result = JsonConvert.DeserializeObject(json, type);

            return((BaseMemento)result);
        }
Ejemplo n.º 12
0
 /// <summary>
 /// Generates a connection and executes the action within a using statement.
 /// Useful for single-line operations.
 /// </summary>
 /// <typeparam name="TConn">The connection type.</typeparam>
 /// <typeparam name="T">The type returned from the action.</typeparam>
 /// <param name="connectionFactory">The connection factory to generate connections from.</param>
 /// <param name="action">The action to execute.</param>
 /// <returns>The value from the action.</returns>
 public static async Task <T> UsingAsync <TConn, T>(this IDbConnectionFactory <TConn> connectionFactory, Func <TConn, Task <T> > action)
     where TConn : IDbConnection
 {
     using (var conn = connectionFactory.Create())
     {
         return(await action(conn));
     }
 }
Ejemplo n.º 13
0
 /// <summary>
 /// Generates a connection and executes the action within a using statement.
 /// Useful for single-line operations.
 /// </summary>
 /// <typeparam name="TConn">The connection type.</typeparam>
 /// <param name="connectionFactory">The connection factory to generate connections from.</param>
 /// <param name="action">The action to execute.</param>
 public static void Using <TConn>(this IDbConnectionFactory <TConn> connectionFactory, Action <TConn> action)
     where TConn : IDbConnection
 {
     using (var conn = connectionFactory.Create())
     {
         action(conn);
     }
 }
Ejemplo n.º 14
0
 /// <summary>
 /// Generates a connection and executes the action within a using statement.
 /// Useful for single-line operations.
 /// </summary>
 /// <typeparam name="TConn">The connection type.</typeparam>
 /// <typeparam name="T">The type returned from the action.</typeparam>
 /// <param name="connectionFactory">The connection factory to generate connections from.</param>
 /// <param name="action">The action to execute.</param>
 /// <returns>The value from the action.</returns>
 public static T Using <TConn, T>(this IDbConnectionFactory <TConn> connectionFactory, Func <TConn, T> action)
     where TConn : IDbConnection
 {
     using (var conn = connectionFactory.Create())
     {
         return(action(conn));
     }
 }
Ejemplo n.º 15
0
        public DapDatabaseFactory(IDbConnectionFactory connFactory, ISqlDialectFactory dialectFactory)
        {
            connFactory.ThrowIfArgumentIsNull("connFactory");
            dialectFactory.ThrowIfArgumentIsNull("dialectFactory");

            _dbConnection = connFactory.Create();
            _sqlDialect   = dialectFactory.Create();
        }
Ejemplo n.º 16
0
 /// <summary>
 ///     Creates a new instance of <see cref="IdentityRecord" />.
 /// </summary>
 /// <param name="dbConnectionFactory"></param>
 public IdentityRecord(IDbConnectionFactory dbConnectionFactory)
 {
     DbConnection        = dbConnectionFactory.Create();
     DbObjectsEscapeChar = dbConnectionFactory.DbObjectsEscapeChar;
     DbObjectsPrefix     = dbConnectionFactory.DbObjectsPrefix;
     DbSchema            = dbConnectionFactory.DbSchema;
     GuidConverter       = dbConnectionFactory.GuidConverter;
 }
Ejemplo n.º 17
0
        public async Task <int> AddAsync(User entity)
        {
            int result = 0;

            using (var connection = _db.Create())
            {
                int entityInserted = await connection.ExecuteScalarAsync <int>(@"INSERT INTO [dbo].[Users]
                           ([Name]
                           ,[LastName]
                           ,[Address]
                           ,[CreatedDate])
                           VALUES
                           (@Name
                           , @LastName
                           , @Address
                           , getdate()) 
             SELECT CAST(SCOPE_IDENTITY() as int)", new
                {
                    Name     = entity.Name,
                    LastName = entity.LastName,
                    Address  = entity.Address
                }, null);

                result = entityInserted;
            }
            return(result);
        }
        /// <inheritdoc/>
        public Task <int> Count()
        {
            var sql = @"
                SELECT COUNT(*)
                FROM [work].[QMessage]
                WHERE [QueueName] = @QueueName;
            ";

            using (var dbConnection = _dbConnectionFactory.Create()) {
                dbConnection.Open();
                var command = dbConnection.CreateCommand();
                command.AddParameterWithValue("@QueueName", _queueNameResolver.Resolve(), DbType.String);
                command.CommandText = sql;
                command.CommandType = CommandType.Text;
                var count = command.ExecuteScalar();
                return(Task.FromResult((int)count));
            }
        }
Ejemplo n.º 19
0
        public async Task <GetOrdersTransactionResult> Handle(GetOrdersTransaction request, CancellationToken cancellationToken)
        {
            var connection = factory.Create(ConnectionType.Reporting);

            const string SELECT_SQL     = "SELECT * FROM orders ORDER BY CreatedTimeUtc DESC ";
            const string PAGING_SQL     = " LIMIT @offset,@take ";
            const string COUNT_SQL      = "SELECT COUNT(1) / @pageSize AS PageCount FROM orders";
            string       selectSQL      = SELECT_SQL;
            var          offset         = 0;
            var          take           = 0;
            int          pageIndex      = 1;
            int          totalPageCount = 1;

            if (request.PagingOptions != null &&
                request.PagingOptions.PageIndex > 0 &&
                request.PagingOptions.PageSize > 0)
            {
                selectSQL += PAGING_SQL;
                offset     = (request.PagingOptions.PageIndex - 1) * request.PagingOptions.PageSize;
                take       = request.PagingOptions.PageSize;
                var count = await connection.QuerySingleAsync <double>(COUNT_SQL, new { pageSize = request.PagingOptions.PageSize });

                pageIndex      = request.PagingOptions.PageIndex;
                totalPageCount = Convert.ToInt32(Math.Ceiling(count));
            }
            var queryResults = await connection.QueryAsync <PersistentObject>(selectSQL, new
            {
                offset,
                take
            });

            var result = new GetOrdersTransactionResult();

            foreach (var data in queryResults)
            {
                var item = mapper.MapToGetOrdersTransactionResultItem(data);
                result.Add(item);
            }
            result.PagingInfo = new PagingInfo {
                CurrentPageIndex = pageIndex, PageCount = totalPageCount
            };
            return(result);
        }
Ejemplo n.º 20
0
 public ExecutionContext(IDbConnectionFactory factory, IProviderConfiguration provider, IDbCommandStringifier stringifier, IMapCompiler compiler, IMapCache mapCache)
 {
     MapCompiler = compiler;
     Stringifier = stringifier;
     Provider    = provider;
     MapCache    = mapCache;
     _completed  = 0;
     _opened     = 0;
     Connection  = factory.Create();
 }
Ejemplo n.º 21
0
        /// <summary>
        /// Creates a new <see cref="IUnitOfWork"/>.
        /// </summary>
        /// <returns>The unit of work.</returns>
        public virtual IUnitOfWork Create()
        {
            var context = (TContext)Activator.CreateInstance(typeof(TContext), mDbConnectionFactory.Create());
            var uow     = new UnitOfWork(context, mLogFile);

            //Set the current user.
            //var repository = uow.GetRepository<User>();
            //uow.SetCurrentUser(repository.FirstOrDefault());
            return(uow);
        }
Ejemplo n.º 22
0
        /// <summary>
        ///     Creates and opens the database connection, or returns the already open connection if it has previously been initialized
        /// </summary>
        protected IDbConnection GetDbConnection()
        {
            if (_dbConnection == null)
            {
                _dbConnection = _dbConnectionFactory.Create();

                _dbConnection.Open();
            }

            return(_dbConnection);
        }
        /// <summary>
        ///     Creates and opens a connection.
        /// </summary>
        /// <param name="factory"></param>ConnectionFac
        /// <returns></returns>
        public static IDbConnection CreateAndOpen(this IDbConnectionFactory factory)
        {
            //Create the connection
            var connection = factory.Create();

            //Open it!
            connection.Open();

            //Well, that was actually pretty easy.
            return(connection);
        }
 public void Handle(SetStatusTableStatusCommand command)
 {
     using (var connection = _dbConnectionFactory.Create())
     {
         connection.Open();
         using (var commandSql = connection.CreateCommand())
         {
             _prepareCommand.Handle(command, commandSql, CommandStringTypes.UpdateStatusRecord);
             commandSql.ExecuteNonQuery();
         }
     }
 }
 /// <inheritdoc />
 public void Handle(DeleteStatusTableStatusCommand <long> command)
 {
     using (var connection = _dbConnectionFactory.Create())
     {
         connection.Open();
         using (var commandSql = connection.CreateCommand())
         {
             _prepareCommand.Handle(command, commandSql, CommandStringTypes.DeleteFromStatus);
             commandSql.ExecuteNonQuery();
         }
     }
 }
        /// <inheritdoc />
        public void Handle(MoveRecordToErrorQueueCommand <long> command)
        {
            if (_options.Value.EnableHoldTransactionUntilMessageCommitted)
            {
                HandleForTransaction(command);
            }
            else
            {
                using (var conn = _dbConnectionFactory.Create())
                {
                    conn.Open();
                    using (var trans = _transactionFactory.Create(conn).BeginTransaction())
                    {
                        using (var commandSql = conn.CreateCommand())
                        {
                            commandSql.Transaction = trans;
                            _prepareCommand.Handle(command, commandSql, CommandStringTypes.MoveToErrorQueue);
                            var iCount = commandSql.ExecuteNonQuery();
                            if (iCount != 1)
                            {
                                return;
                            }

                            //the record is now in the error queue, remove it from the main queue
                            _deleteMetaCommandHandler.Handle(new DeleteMetaDataCommand(command.QueueId, conn, trans));

                            if (!_options.Value.EnableStatusTable)
                            {
                                trans.Commit();
                                return;
                            }

                            //update the status record
                            _setStatusCommandHandler.Handle(new SetStatusTableStatusTransactionCommand(command.QueueId, conn, QueueStatuses.Error, trans));
                        }
                        trans.Commit();
                    }
                }
            }
        }
        /// <summary>
        /// Creates an ambient database context with the specified options or joins an existing one.
        /// </summary>
        /// <param name="join">
        /// Determines whether to join and inherit an existing ambient database context. If one isn't found, a
        /// new ambient database context will be created based on the specified configurations provides via
        /// <see cref="Create"/> method. The default is <c>true</c>.
        /// </param>
        /// <param name="suppress">
        /// Determines whether the transaction support should be disabled. The default is <c>false</c>.
        /// </param>
        /// <param name="isolationLevel">
        /// Sets the transaction isolation level. The default is <see cref="IsolationLevel.ReadCommitted"/>.
        /// </param>
        /// <returns>
        /// The <see cref="IAmbientDbContext"/> instance.
        /// </returns>
        /// <exception cref="AmbientDbContextException">
        /// when the database connection factory returns a connection in a non-closed state.
        /// </exception>
        public IAmbientDbContext Create(bool join = true, bool suppress = false, IsolationLevel isolationLevel = IsolationLevel.ReadCommitted)
        {
            var connection = _connectionFactory.Create();

            if (connection.State != ConnectionState.Closed)
            {
                throw new AmbientDbContextException("The database connection factory returned a database connection in a non-closed state. This behavior is not allowed as the ambient database context will maintain database connection state as required.");
            }

            var ambientDbContext = new AmbientDbContext(connection, join, suppress, isolationLevel);

            return(ambientDbContext);
        }
Ejemplo n.º 28
0
        public RepositoryContext(TDatabase dbSettings, IDbConnectionFactory connFactory)
        {
            if (dbSettings == null)
            {
                throw new ArgumentNullException(nameof(dbSettings));
            }
            if (connFactory == null)
            {
                throw new ArgumentNullException(nameof(connFactory));
            }

            _connection = new Lazy <IDbConnection>(() => connFactory.Create(dbSettings.ConnectionString));
        }
        private async Task <SqlConnection> MakeConnection()
        {
            var connection = (await _dbConnectionFactory.Create(_configurator)) as SqlConnection;

            if (connection == null)
            {
                throw new InvalidDbConnectionException(typeof(SqlConnection));
            }

            await connection.OpenAsync();

            return(connection);
        }
Ejemplo n.º 30
0
        private DbConnection GetOrCreateOpenedConnection()
        {
            ThrowIfDisposed();

            if (_connection != null)
            {
                return(_connection);
            }

            _connection = _connectionFactory.Create();
            _connection.Open();
            return(_connection);
        }