Пример #1
0
        private static List <T> GenerateObjects <T>(
            Dictionary <int, ObjectPropertyMapping> indexer,
            IDataReader data,
            ExecutionContext context)
        {
            var timer = new Stopwatch();

            timer.Start();
            try
            {
                var returnList = new List <T>();

                using (data)
                {
                    while (data.Read())
                    {
                        var adapter = new DataRecordAdapter(data);

                        returnList.Add(GenerateObject <T>(adapter, indexer, context));
                    }
                }

                return(returnList);
            }
            finally
            {
                timer.Stop();
                context.ExecutionEvent.DataMappingTiming = timer.ElapsedTicks;
            }
        }
Пример #2
0
        private static List <T> GenerateObjects <T>(
            Dictionary <int, ObjectPropertyMapping> indexer,
            DataTable data,
            ExecutionContext context)
        {
            var timer = new Stopwatch();

            timer.Start();
            var returnList = new List <T>();

            try
            {
                foreach (DataRow dataRow in data.Rows)
                {
                    var adapter = new DataRecordAdapter(dataRow);

                    returnList.Add(GenerateObject <T>(adapter, indexer, context));
                }
            }
            finally
            {
                timer.Stop();
                context.ExecutionEvent.DataMappingTiming = timer.ElapsedTicks;
            }

            return(returnList);
        }
Пример #3
0
        private static T GenerateObject <T>(
            DataRecordAdapter row,
            Dictionary <int, ObjectPropertyMapping> indexer,
            ExecutionContext context)
        {
            var newO = Activator.CreateInstance <T>();

            foreach (var key in indexer.Keys)
            {
                if (row[key] == null || row[key] == DBNull.Value)
                {
                    continue;
                }

                var indexerVal = indexer[key];
                var columnName = indexerVal.Name.ToLower();
                var tempValue  = row[key];

                var customMapping = context.ParameterMappingFunctionCollection.ContainsKey(columnName)
                                        ? context.ParameterMappingFunctionCollection[columnName]
                                        : null;
                SetProperty(
                    ref newO,
                    indexerVal,
                    tempValue,
                    customMapping);
            }

            return(newO);
        }
Пример #4
0
        /// <summary>
        /// Map a datareader to a new object of type T. If T implements IDictionary&lt;string,object&gt; then
        /// the dictionary will be populated.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="reader"></param>
        /// <returns></returns>
        public static T Map <T>(this IDataRecord record)
        {
            var wrapper = new DataRecordAdapter(record);

            return(wrapper.Map <T>());
        }
Пример #5
0
        /// <summary>
        /// Map to a data record.
        /// </summary>
        /// <param name="reader"></param>
        /// <param name="obj"></param>
        public static void Map(this IDataRecord record, object obj)
        {
            var wrapper = new DataRecordAdapter(record);

            wrapper.Map(obj);
        }