Beispiel #1
0
        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));
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
        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));
        }