Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
        }