예제 #1
0
        public static async Task <RelationalDataReader> ExecuteSqlQueryAsync(this DatabaseFacade databaseFacade,
                                                                             string sql,
                                                                             TheGodfatherDbContext db,
                                                                             params object[] parameters)
        {
            IConcurrencyDetector concurrencyDetector = databaseFacade.GetService <IConcurrencyDetector>();

            using (concurrencyDetector.EnterCriticalSection()) {
                RawSqlCommand rawSqlCommand = databaseFacade
                                              .GetService <IRawSqlCommandBuilder>()
                                              .Build(sql, parameters);

                return(await rawSqlCommand
                       .RelationalCommand
                       .ExecuteReaderAsync(
                           new RelationalCommandParameterObject(
                               databaseFacade.GetService <IRelationalConnection>(),
                               parameterValues : rawSqlCommand.ParameterValues,
                               readerColumns : null,
                               context : db,
                               logger : null
                               )
                           ));
            }
        }
예제 #2
0
        public static async Task <RelationalDataReader> ExecuteCommandAsync(this DatabaseFacade databaseFacade,
                                                                            RawSqlCommand rawSqlCommand,
                                                                            CancellationToken cancellationToken = default(CancellationToken),
                                                                            params object[] parameters)
        {
            var concurrencyDetector = databaseFacade.GetService <IConcurrencyDetector>();

            using (concurrencyDetector.EnterCriticalSection())
            {
                return(await rawSqlCommand
                       .RelationalCommand
                       .ExecuteReaderAsync(
                           databaseFacade.GetService <IRelationalConnection>(),
                           parameterValues : rawSqlCommand.ParameterValues,
                           cancellationToken : cancellationToken));
            }
        }
예제 #3
0
        /// <summary>
        /// execute sql and return data reader
        /// </summary>
        /// <param name="databaseFacade"></param>
        /// <param name="sql"></param>
        /// <param name="parameters"></param>
        /// <returns></returns>
        public static RelationalDataReader ExecuteSqlQuery(this DatabaseFacade databaseFacade, string sql, params object[] parameters)
        {
            IConcurrencyDetector concurrencyDetector = databaseFacade.GetService <IConcurrencyDetector>();

            using (concurrencyDetector.EnterCriticalSection())
            {
                RawSqlCommand rawSqlCommand = databaseFacade
                                              .GetService <IRawSqlCommandBuilder>()
                                              .Build(sql, parameters);

                return(rawSqlCommand
                       .RelationalCommand
                       .ExecuteReader(
                           databaseFacade.GetService <IRelationalConnection>(),
                           parameterValues: rawSqlCommand.ParameterValues));
            }
        }
예제 #4
0
        public static async Task <RelationalDataReader> ExecuteSqlQueryAsync(this DatabaseFacade databaseFacade,
                                                                             string sql,
                                                                             CancellationToken cancellationToken = default,
                                                                             params object[] parameters)
        {
            IConcurrencyDetector concurrencyDetector = databaseFacade.GetService <IConcurrencyDetector>();

            using (concurrencyDetector.EnterCriticalSection()) {
                RawSqlCommand rawSqlCommand = databaseFacade
                                              .GetService <IRawSqlCommandBuilder>()
                                              .Build(sql, parameters);

                return(await rawSqlCommand
                       .RelationalCommand
                       .ExecuteReaderAsync(
                           databaseFacade.GetService <IRelationalConnection>(),
                           parameterValues : rawSqlCommand.ParameterValues,
                           cancellationToken : cancellationToken));
            }
        }
        private static async Task <RelationalDataReader> ExecuteSqlQueryAsync(
            this DbContext dbContext,
            string sql,
            IEnumerable <object> parameters,
            CancellationToken cancellationToken = default)
        {
            if (dbContext == null)
            {
                throw new ArgumentNullException(nameof(dbContext));
            }

            if (string.IsNullOrWhiteSpace(sql))
            {
                throw new ArgumentNullException(nameof(sql));
            }

            IConcurrencyDetector concurrencyDetector = dbContext.GetService <IConcurrencyDetector>();

            using (concurrencyDetector.EnterCriticalSection())
            {
                RawSqlCommand rawSqlCommand = dbContext
                                              .GetService <IRawSqlCommandBuilder>()
                                              .Build(sql, parameters);

                RelationalCommandParameterObject paramObject = new RelationalCommandParameterObject(
                    dbContext.GetService <IRelationalConnection>(),
                    rawSqlCommand.ParameterValues,
                    null,
                    null,
                    null);

                RelationalDataReader relationalDataReader = await rawSqlCommand
                                                            .RelationalCommand
                                                            .ExecuteReaderAsync(paramObject, cancellationToken);

                return(relationalDataReader);
            }
        }