/// <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); }
/// <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); }
// 执行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(); } }
// 执行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(); } }