internal static IEnumerable <T> WhereLazy <T>(this IDbCommand dbCmd, object anonType)
        {
            dbCmd.SetFilters <T>(anonType);

            if (OrmLiteConfig.ResultsFilter != null)
            {
                foreach (var item in OrmLiteConfig.ResultsFilter.GetList <T>(dbCmd))
                {
                    yield return(item);
                }
                yield break;
            }

            var dialectProvider = dbCmd.GetDialectProvider();

            using (var reader = dbCmd.ExecuteReader())
            {
                var indexCache = reader.GetIndexFieldsCache(ModelDefinition <T> .Definition, dialectProvider);
                var values     = new object[reader.FieldCount];
                while (reader.Read())
                {
                    var row = OrmLiteUtils.CreateInstance <T>();
                    row.PopulateWithSqlReader(dialectProvider, reader, indexCache, values);
                    yield return(row);
                }
            }
        }
        internal static IEnumerable <T> SelectLazy <T>(this IDbCommand dbCmd, string sql, object anonType = null)
        {
            if (anonType != null)
            {
                dbCmd.SetParameters <T>(anonType, excludeDefaults: false);
            }
            var dialectProvider = dbCmd.GetDialectProvider();

            dbCmd.CommandText = dialectProvider.ToSelectStatement(typeof(T), sql);

            var resultsFilter = OrmLiteConfig.ResultsFilter;

            if (resultsFilter != null)
            {
                foreach (var item in resultsFilter.GetList <T>(dbCmd))
                {
                    yield return(item);
                }
                yield break;
            }

            using (var reader = dbCmd.ExecuteReader())
            {
                var indexCache = reader.GetIndexFieldsCache(ModelDefinition <T> .Definition, dialectProvider);
                var values     = new object[reader.FieldCount];
                while (reader.Read())
                {
                    var row = OrmLiteUtils.CreateInstance <T>();
                    row.PopulateWithSqlReader(dialectProvider, reader, indexCache, values);
                    yield return(row);
                }
            }
        }
        internal static IEnumerable <T> SelectLazyFmt <T>(this IDbCommand dbCmd, string filter, params object[] filterParams)
        {
            var dialectProvider = dbCmd.GetDialectProvider();

            dbCmd.CommandText = dialectProvider.ToSelectStatement(typeof(T), filter, filterParams);

            if (OrmLiteConfig.ResultsFilter != null)
            {
                foreach (var item in OrmLiteConfig.ResultsFilter.GetList <T>(dbCmd))
                {
                    yield return(item);
                }
                yield break;
            }

            var fieldDefs = ModelDefinition <T> .Definition.FieldDefinitionsArray;

            using (var reader = dbCmd.ExecReader(dbCmd.CommandText))
            {
                var indexCache = reader.GetIndexFieldsCache(ModelDefinition <T> .Definition);
                while (reader.Read())
                {
                    var row = OrmLiteUtils.CreateInstance <T>();
                    row.PopulateWithSqlReader(dialectProvider, reader, fieldDefs, indexCache);
                    yield return(row);
                }
            }
        }
Ejemplo n.º 4
0
        internal static Task <List <T> > ExprConvertToListAsync <T>(this IDataReader reader, IOrmLiteDialectProvider dialectProvider, CancellationToken token)
        {
            var indexCache = reader.GetIndexFieldsCache(ModelDefinition <T> .Definition, dialectProvider);
            var values     = new object[reader.FieldCount];

            return(dialectProvider.ReaderEach(reader, () =>
            {
                var row = OrmLiteUtils.CreateInstance <T>();
                row.PopulateWithSqlReader(dialectProvider, reader, indexCache, values);
                return row;
            }, token));
        }
        internal static Task <List <T> > ExprConvertToListAsync <T>(this IDataReader dataReader, IOrmLiteDialectProvider dialectProvider, CancellationToken token)
        {
            var fieldDefs = ModelDefinition <T> .Definition.AllFieldDefinitionsArray;

            var indexCache = dataReader.GetIndexFieldsCache(ModelDefinition <T> .Definition);

            return(dialectProvider.ReaderEach(dataReader, () =>
            {
                var row = OrmLiteUtils.CreateInstance <T>();
                row.PopulateWithSqlReader(dialectProvider, dataReader, fieldDefs, indexCache);
                return row;
            }, token));
        }