public static async Task <Dictionary <TKey, List <T> > > LoadDictionaryAsync <T, TKey>( this DbDataReader reader, MapDefinition <T> mapDefinition, string keyColumn) where T : new() { var result = new Dictionary <TKey, List <T> >(); if (reader.HasRows == false) { return(result); } var keyOrdinal = reader.GetOrdinal(keyColumn); var map = CreateMap(reader, mapDefinition); if (mapDefinition.HasSqlServerSpecificFields == false) { return(await ReadDictionaryAsync(reader, keyOrdinal, result, map)); } var sqlReader = new SqlDataReaderShim((SqlDataReader)reader); var sqlMap = (ISqlMap <T>)map; return(await ReadSqlServerSpecificDictionaryAsync(sqlReader, keyOrdinal, result, sqlMap)); }
private static async Task <List <T> > ReadSqlServerSpecificListAsync <T>( SqlDataReaderShim sqlReader, ISqlMap <T> sqlMap, List <T> list) where T : new() { while (await sqlReader.ReadAsync()) { var item = LoadItemWithSqlServerSpecificField(sqlReader, sqlMap); list.Add(item); } return(list); }
public static async Task <T> LoadSingleAsync <T>( this DbDataReader reader, MapDefinition <T> mapDefinition) where T : new() { if (await reader.ReadAsync() == false) { return(default(T)); } var map = CreateMap(reader, mapDefinition); if (mapDefinition.HasSqlServerSpecificFields == false) { return(LoadItem(reader, map)); } var sqlReader = new SqlDataReaderShim((SqlDataReader)reader); var sqlMap = (ISqlMap <T>)map; return(LoadItemWithSqlServerSpecificField(sqlReader, sqlMap)); }
private static async Task <Dictionary <TKey, List <T> > > ReadSqlServerSpecificDictionaryAsync <T, TKey>( SqlDataReaderShim sqlReader, int keyOrdinal, Dictionary <TKey, List <T> > result, ISqlMap <T> sqlMap) where T : new() { while (await sqlReader.ReadAsync()) { var key = (TKey)sqlReader.GetValue(keyOrdinal); List <T> list; if (result.TryGetValue(key, out list) == false) { list = new List <T>(); result[key] = list; } var item = LoadItemWithSqlServerSpecificField(sqlReader, sqlMap); list.Add(item); } return(result); }
public static async Task <List <T> > LoadListAsync <T>( this DbDataReader reader, MapDefinition <T> mapDefinition) where T : new() { var list = new List <T>(); if (reader.HasRows == false) { return(list); } var map = CreateMap(reader, mapDefinition); if (mapDefinition.HasSqlServerSpecificFields == false) { return(await ReadListAsync(reader, map, list)); } var sqlReader = new SqlDataReaderShim((SqlDataReader)reader); var sqlMap = (ISqlMap <T>)map; return(await ReadSqlServerSpecificListAsync(sqlReader, sqlMap, list)); }