public static async Task <T> ReadAsAsync <T>(this SqlCommand cmd) { if (typeof(T).IsSimpleType()) { return(await cmd.ReadToValueAsync <T>()); } var key = SqlDataReaderExtensions.GetAutoCreateObjectFuncKey <T>(cmd.CommandText); var autoMappingFunc = MappingManager.GetAutoCreateObjectFunc <T>(key); var readerFlags = await GetReaderFlagsAndOpenConnectionAsync(cmd, CommandBehavior.SingleRow); using (var dr = await cmd.ExecuteReaderAsync(readerFlags).ConfigureAwait(false)) { return(dr.Read() ? dr.CreateObject(autoMappingFunc, key) : default(T)); } }
public static T ReadAs <T>(this SqlCommand cmd) { if (typeof(T).IsSimpleType()) { return(cmd.ReadToValue <T>()); } var key = SqlDataReaderExtensions.GetAutoCreateObjectFuncKey <T>(cmd.CommandText); var autoMappingFunc = MappingManager.GetAutoCreateObjectFunc <T>(key); var readerFlags = GetReaderFlagsAndOpenConnection(cmd, CommandBehavior.SingleRow); using (var dr = cmd.ExecuteReader(readerFlags)) { return(dr.Read() ? dr.CreateObject(autoMappingFunc, key) : default(T)); } }
public static async Task <IList <T> > ReadAsListAsync <T>(this SqlCommand cmd, IList <T> list) { if (typeof(T).IsSimpleType()) { return(await cmd.ReadToListOfValuesAsync <T>(list)); } var key = SqlDataReaderExtensions.GetAutoCreateObjectFuncKey <T>(cmd.CommandText); var autoMappingFunc = MappingManager.GetAutoCreateObjectFunc <T>(key); var readerFlags = await GetReaderFlagsAndOpenConnectionAsync(cmd, CommandBehavior.SingleResult); using (var dr = await cmd.ExecuteReaderAsync(readerFlags).ConfigureAwait(false)) { list = dr.ReadAsList(list, autoMappingFunc, key); } return(list); }
private static IEnumerable <T> ReadAsEnumerableObjects <T>(this SqlCommand cmd) { var readerFlags = GetReaderFlagsAndOpenConnection(cmd, CommandBehavior.SingleResult); using (var dr = cmd.ExecuteReader(readerFlags)) { var key = SqlDataReaderExtensions.GetAutoCreateObjectFuncKey <T>(dr); var autoMappingFunc = MappingManager.GetAutoCreateObjectFunc <T>(key); if (autoMappingFunc == null) { autoMappingFunc = SqlDataReaderExtensions.CreateAutoMappingFunc <T>(dr); MappingManager.AddAutoCreateObjectFunc(key, autoMappingFunc); } while (dr.Read()) { yield return(autoMappingFunc(dr)); } } }