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) }); } }