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; } }
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); }
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); }
/// <summary> /// Map a datareader to a new object of type T. If T implements IDictionary<string,object> 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>()); }
/// <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); }