// 执行SQL 语句,并返回 <see cref="IEnumerable"/> 对象 List <T> ExecuteList <T>(IDbCommand cmd, DbCommandDefinition_Select definition) { IDataReader reader = null; List <T> objList = new List <T>(); try { reader = this.ExecuteReader(cmd); TypeDeserializer deserializer = new TypeDeserializer(reader, definition); objList = deserializer.Deserialize <T>(); } finally { if (reader != null) { reader.Dispose(); } if (cmd != null) { cmd.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 语句,并返回单个实体对象 T Execute <T>(IDbCommand cmd, DbCommandDefinition_Select definition) { IDataReader reader = null; try { reader = this.ExecuteReader(cmd); TypeDeserializer deserializer = new TypeDeserializer(reader, definition); List <T> result = deserializer.Deserialize <T>(); return(result.FirstOrDefault()); } finally { if (cmd != null) { cmd.Dispose(); } if (reader != null) { reader.Dispose(); } this.InternalDispose(); } }
/// <summary> /// 实体化 <see cref="TypeDeserializer"/> 类的新实例 /// </summary> /// <param name="reader">DataReader</param> /// <param name="definition">命令描述对象,用于解析实体的外键</param> public TypeDeserializer(IDataReader reader, DbCommandDefinition_Select definition) { _definition = definition; _reader = reader; }