Example #1
0
        internal static IList <T> ReadAsList <T>(this SqlDataReader dr, IList <T> list, Func <SqlDataReader, T> autoMappingFunc, string key)
        {
            if (list == null)
            {
                list = new List <T>();
            }

            if (dr.Read())
            {
                if (autoMappingFunc == null)
                {
                    autoMappingFunc = CreateAutoMappingFunc <T>(dr);
                    MappingManager.AddAutoCreateObjectFunc(key, autoMappingFunc);
                }

                list.Add(autoMappingFunc(dr));
            }

            while (dr.Read())
            {
                list.Add(autoMappingFunc(dr));
            }

            return(list);
        }
Example #2
0
        public static Dictionary <TKey, TValue> ReadAsDictionary <TKey, TValue>(this SqlDataReader dr, bool getNextResult = true)
        {
            Dictionary <TKey, TValue> dictionary;

            var underlyingType = typeof(TValue).GetUnderlyingType();

            if (underlyingType.IsSimpleType())
            {
                dictionary = ReadToDictionaryOfValues <TKey, TValue>(dr, underlyingType);
            }
            else
            {
                var key             = GetAutoCreateObjectFuncKey <TValue>(dr);
                var autoMappingFunc = MappingManager.GetAutoCreateObjectFunc <TValue>(key);

                if (autoMappingFunc == null)
                {
                    autoMappingFunc = CreateAutoMappingFunc <TValue>(dr);
                    MappingManager.AddAutoCreateObjectFunc(key, autoMappingFunc);
                }

                dictionary = ReadToDictionaryOfObjects <TKey, TValue>(dr, autoMappingFunc);
            }

            if (getNextResult)
            {
                dr.NextResult();
            }

            return(dictionary);
        }
Example #3
0
        internal static T CreateObject <T>(this SqlDataReader dr, Func <SqlDataReader, T> autoMappingFunc, string key)
        {
            if (autoMappingFunc == null)
            {
                autoMappingFunc = CreateAutoMappingFunc <T>(dr);
                MappingManager.AddAutoCreateObjectFunc(key, autoMappingFunc);
            }

            return(autoMappingFunc(dr));
        }
Example #4
0
        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));
                }
            }
        }