Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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}");
        }