Ejemplo n.º 1
0
        public static void EntityListByEmit(System.Data.IDataReader DataReader, DbExecuteReadOnebyOneAction <T> callback)
        {
            Dictionary <string, string> FieldDic = new Dictionary <string, string>();
            int i = 0;

            while (i < DataReader.FieldCount)
            {
                string Name = DataReader.GetName(i);
                if (!FieldDic.ContainsKey(Name.ToLower()))
                {
                    FieldDic.Add(Name.ToLower(), Name);
                }
                i++;
            }

            EntityPropertyEmitSetter[] ps = EntityPropertyEmitSetter.GetProperties(typeof(T));
            long rowNum = 0;

            while (DataReader.Read())
            {
                T   obj = new T();
                int num = 0;
                while (num < ps.Length)
                {
                    string fieldName = ps[num].Info.Name;
                    string name      = fieldName.ToLower();
                    object val       = DataReader[FieldDic[name]];
                    if (FieldDic.ContainsKey(name) && val != DBNull.Value)
                    {
                        ps[num].Setter(obj, val);
                    }
                    num++;
                }
                rowNum++;
                DbExecuteReadOnebyOneResult <T> result = new DbExecuteReadOnebyOneResult <T>(rowNum, obj);
                try
                {
                    callback(result);
                }
                catch
                {
                    break;
                }
                if (!result.Next)
                {
                    break;
                }
            }
            DataReader.Close();
        }
Ejemplo n.º 2
0
        public static List <T> EntityListByEmit(System.Data.IDataReader DataReader)
        {
            Dictionary <string, string> FieldDic = new Dictionary <string, string>();
            int i = 0;

            while (i < DataReader.FieldCount)
            {
                string Name = DataReader.GetName(i);
                if (!FieldDic.ContainsKey(Name.ToLower()))
                {
                    FieldDic.Add(Name.ToLower(), Name);
                }
                i++;
            }

            List <T> Li = new List <T>();

            EntityPropertyEmitSetter[] ps = EntityPropertyEmitSetter.GetProperties(typeof(T));
            while (DataReader.Read())
            {
                T   obj = new T();
                int num = 0;
                while (num < ps.Length)
                {
                    string fieldName = ps[num].Info.Name;
                    string name      = fieldName.ToLower();
                    object val       = DataReader[FieldDic[name]];
                    if (FieldDic.ContainsKey(name) && val != DBNull.Value)
                    {
                        ps[num].Setter(obj, val);
                    }
                    num++;
                }
                Li.Add(obj);
            }
            DataReader.Close();
            return(Li);
        }