Esempio n. 1
0
        /// <summary>
        /// 异步执行SQL 语句,并返回 <see cref="IEnumerable"/> 对象
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="cmd">SQL 命令</param>
        /// <param name="definition">命令定义对象,用于解析实体的外键</param>
        /// <returns></returns>
        async Task <List <T> > ExecuteListAsync <T>(IDbCommand cmd, DbCommandDefinition_Select definition)
        {
            IDataReader reader  = null;
            List <T>    objList = new List <T>();

            try
            {
                reader = await this.ExecuteReaderAsync(cmd);

                TypeDeserializer deserializer = new TypeDeserializer(reader, definition);
                objList = await deserializer.DeserializeAsync <T>();
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
                this.InternalDispose();
            }
            return(objList);
        }
Esempio n. 2
0
        /// <summary>
        /// 异步执行SQL 语句,并返回 <see cref="IEnumerable"/> 对象
        /// </summary>
        /// <typeparam name="T">实体类型</typeparam>
        /// <param name="command">SQL 命令</param>
        /// <param name="map">命令定义对象,用于解析实体的外键</param>
        /// <returns></returns>
        protected virtual async Task <List <T> > ExecuteListAsync <T>(IDbCommand command, IMapper map)
        {
            IDataReader reader  = null;
            List <T>    objList = new List <T>();

            try
            {
                reader = await this.ExecuteReaderAsync(command);

                TypeDeserializer deserializer = new TypeDeserializer(this, reader, map);
                objList = await deserializer.DeserializeAsync <T>();
            }
            finally
            {
                if (command != null)
                {
                    command.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
                this.InternalDispose();
            }
            return(objList);
        }
Esempio n. 3
0
        // 执行SQL 语句,并返回单个实体对象
        async Task <T> ExecuteAsync <T>(IDbCommand cmd, DbCommandDefinition_Select definition)
        {
            IDataReader   reader = null;
            IDbConnection conn   = null;

            try
            {
                reader = await this.ExecuteReaderAsync(cmd);

                conn = cmd != null ? cmd.Connection : null;
                TypeDeserializer deserializer = new TypeDeserializer(reader, definition);
                List <T>         result       = await deserializer.DeserializeAsync <T>();

                return(result.FirstOrDefault());
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
                this.InternalDispose();
            }
        }
Esempio n. 4
0
        // 执行SQL 语句,并返回单个实体对象
        protected virtual async Task <T> ExecuteAsync <T>(IDbCommand command, IMapper map)
        {
            IDataReader   reader = null;
            IDbConnection conn   = null;

            try
            {
                reader = await this.ExecuteReaderAsync(command);

                conn = command != null ? command.Connection : null;
                TypeDeserializer deserializer = new TypeDeserializer(this, reader, map);
                List <T>         result       = await deserializer.DeserializeAsync <T>();

                return(result.FirstOrDefault());
            }
            finally
            {
                if (command != null)
                {
                    command.Dispose();
                }
                if (reader != null)
                {
                    reader.Dispose();
                }
                this.InternalDispose();
            }
        }