public static IDbSet <T> GetDbSet <T>(TimDbContext ctx) where T : class { var result = (IDbSet <T>) typeof(TimDbContext).GetProperties().FirstOrDefault(p => p.Name == typeof(T).Name)?.GetValue(ctx); if (result == null) { throw new Exception($"Could not find DbSet for type {typeof(T)}"); } return(result); }
private static void RunDbStressTest() { Console.WriteLine($"Starting DB stress test"); var sw = Stopwatch.StartNew(); int counter = 0; Parallel.ForEach(ReflectionHelper.GetTimTypes(), t => { var ctx = new TimDbContext(); var rnd = new Random(); var repository = ctx.GetType().GetProperties().FirstOrDefault(p => p.Name == t.Name).GetValue(ctx); var cache = IgniteFactory.GetIgnite().GetCache <int, object>(t.Name);; //GetOrCreateCache(t); var size = ReflectionHelper.GetCacheSize(cache); if (size < 2) { return; } if (t.GetProperty("ID") == null) { return; } if (t.Assembly.GetType($"{t.Name}ComplexPK") != null) { return; } for (int i = 0; i < 1000; i++) { var key = rnd.Next(1, size - 1); try { var item = repository.GetType().GetMethod("Find").Invoke(repository, new object[] { new object[] { key } }); if (item != null) { counter++; } } catch (Exception ex) { Console.WriteLine($"Exception in {t.Name}"); return; } } }); Console.WriteLine($"DB stress test for {counter} items finished in {sw.Elapsed}"); }