/// <summary>Creates a <typeparamref name="T"/> entity from the <see cref="System.Data.Common.DbDataReader"/>.</summary> /// <param name="reader">The reader object.</param> /// <returns>Returns a <typeparamref name="T"/> object.</returns> public static T ToPoco <T>(this DbDataReader reader) where T : class, new() { T item = (T)Activator.CreateInstance(typeof(T), new object[0]); if (!reader.HasRows) { return(item); } Dictionary <string, Delegate> typeConverter = ReaderTypeConverter.GetTypeConverter(typeof(T)); typeof(T).GetProperties() .ToList() .ForEach(prop => { var setPropFunction = typeConverter[prop.Name] as Delegate; if (setPropFunction == null) { return; } var output = setPropFunction.DynamicInvoke(new object[] { prop.Name, reader }); prop.SetValue(item, output, new object[0]); }); return(item); }
/// <summary>Create a list of <typeparamref name="T"/> entities from the <see cref="System.Data.Common.DbDataReader"/>.</summary> /// <param name="reader">The reader object.</param> /// <returns>Returns a list of <typeparamref name="T"/> objects.</returns> public static List <T> ToList <T>(this DbDataReader reader) where T : class, new() { List <T> results = new List <T>(); if (!reader.HasRows) { return(results); } Dictionary <string, Delegate> typeConverter = ReaderTypeConverter.GetTypeConverter(typeof(T));// TypeConverters[typeof(TModel).FullName]; do { T item = reader.ToPoco <T>(); results.Add(item); } while (reader.Read()); return(results); }