示例#1
0
        private async Task QueryImplInternalAsync <TTarget>(int hashKey, Type targetType, string sql, DbConnection conn, DbTransaction trans, CommandType cmdType, CommandBehavior behavior, Action <object> resultHandler, object objParameter, Type paramType)
        {
            DbCommand command = conn.CreateCommand();

            command.CommandText = sql;
            command.CommandType = cmdType;
            command.Transaction = trans;
            if (objParameter != null)
            {
                var paramAction = RepositoryHelper.GetActionCache(hashKey, sql, paramType, this.Provider);
                paramAction(command, objParameter);
            }
            this.Open(conn);
            DbDataReader reader = await command.ExecuteReaderAsync(behavior);

            var func = RepositoryHelper.GetReader(hashKey, targetType, reader, this.Provider.IsMappingIgnoreCase);

            while (reader.Read())
            {
                resultHandler(func?.Invoke(reader));
            }
            while (reader.NextResult())
            {
            }
#if COREFX
            try { command.Cancel(); } catch { }
#else
            reader.Close();
#endif
            reader.Dispose();
            reader = null;
        }
示例#2
0
        private async Task <int> ExecSqlImplInternalAsync(int hashKey, string sql, DbConnection conn, DbTransaction trans, CommandType cmdType, object objParameter, Type paramType)
        {
            DbCommand command = conn.CreateCommand();

            command.CommandText = sql;
            command.CommandType = cmdType;
            command.Transaction = trans;
            if (objParameter != null)
            {
                var paramAction = RepositoryHelper.GetActionCache(hashKey, sql, paramType, this.Provider);
                paramAction(command, objParameter);
            }
            this.Open(conn);
            return(await command.ExecuteNonQueryAsync());
        }
示例#3
0
        private async Task <QueryReader> QueryMultipleImplAsync(int hashKey, string sql, DbConnection conn, DbTransaction trans, CommandType cmdType, CommandBehavior behavior, object objParameter, Type paramType, bool isCloseConnection)
        {
            DbCommand command = conn.CreateCommand();

            command.CommandText = sql;
            command.CommandType = cmdType;
            command.Transaction = trans;
            if (objParameter != null)
            {
                var paramAction = RepositoryHelper.GetActionCache(hashKey, sql, paramType, this.Provider);
                paramAction(command, objParameter);
            }
            this.Open(conn);
            DbDataReader reader = await command.ExecuteReaderAsync(behavior);

            return(new QueryReader(hashKey, command, reader, this.Provider.IsMappingIgnoreCase, isCloseConnection));
        }