예제 #1
0
        public void QueryAllTables()
        {
            var ctx    = new AdventureWorksContext(configuration);
            var dbSets = ctx.GetType().GetTypeInfo()
                         .DeclaredProperties
                         .Where(p => p.PropertyType.IsGenericType && p.PropertyType.GetGenericTypeDefinition() == typeof(DbSet <>))
                         .Select(p => p);

            var mi = this.GetType().GetMethod(nameof(Query), BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);

            foreach (var dbSet in dbSets)
            {
                var genericMethod = mi.MakeGenericMethod(dbSet.PropertyType.GetGenericArguments()[0]);
                genericMethod.Invoke(this, new [] { dbSet.GetMethod.Invoke(ctx, null) });
            }
        }