/// <summary> /// 通用获取集合对象方法 /// </summary> /// <param name="sql">查询的Sql语句</param> /// <param name="commandType">Type of the command.</param> /// <param name="paramList">参数列表,如果没有则为null</param> /// <param name="connection">The connection.</param> /// <param name="transaction">The transaction.</param> /// <returns></returns> public List <T> GetList(string sql, CommandType commandType, IDbDataParameter[] paramList, DbConnection connection, DbTransaction transaction) { DateTime start = DateTime.Now; var list = new List <T>(); try { var dbc = transaction == null ? new SqlCommand(sql, (SqlConnection)connection) { CommandType = commandType } : new SqlCommand(sql, (SqlConnection)connection, (SqlTransaction)transaction) { CommandType = commandType }; if (paramList != null) { dbc.Parameters.AddRange(paramList); } using (IDataReader dr = dbc.ExecuteReader()) { DynamicBuilder <T> builder = DynamicBuilder <T> .CreateBuilder(dr); while (dr.Read()) { T entity = builder.Build(dr); if (!list.Contains(entity)) { list.Add(entity); } } } dbc.Parameters.Clear(); } catch (Exception ex) { Logger.Error(sql); Logger.Error(ex); } Logger.Debug($"Execute {commandType} : {sql} cost {DateTime.Now.Subtract(start).TotalMilliseconds} ms."); return(list); }
/// <summary> /// Fills the entity from reader. /// </summary> /// <typeparam name="T"></typeparam> /// <param name="dr">The dr.</param> /// <returns></returns> protected virtual List <T> FillEntitiesFromReader(SqlDataReader dr) { var list = new List <T>(); DynamicBuilder <T> builder = DynamicBuilder <T> .CreateBuilder(dr); using (SqlDataReader reader = dr) { while (reader.Read()) { var instance = builder.Build(reader); if (!list.Contains(instance)) { list.Add(instance); } } } return(list); }