Пример #1
0
 public long GetOrderAndDetails(int orderId)
 {
     return(Utility.Watch(delegate()
     {
         using (var db = new MegoContext())
         {
             var data = db.Orders.Include(a => a.Details).Where(a => a.Id == orderId).ToArray();
         }
     }));
 }
Пример #2
0
 public long GetDetailsByOrder(int orderId)
 {
     return(Utility.Watch(delegate()
     {
         using (var db = new MegoContext())
         {
             var data = db.OrderDetails.Where(a => a.OrderId == orderId).ToArray();
         }
     }));
 }
Пример #3
0
 public long GetCustomerById(int id)
 {
     return(Utility.Watch(delegate()
     {
         using (var db = new MegoContext())
         {
             var data = db.Customers.FirstOrDefault(a => a.Id == id);
         }
     }));
 }
Пример #4
0
 public long DeleteDiscreteWarehouses(Warehouse[] warehouses)
 {
     return(Utility.Watch(delegate()
     {
         using (var db = new MegoContext())
         {
             db.Warehouses.RemoveRange(warehouses);
             db.Executor.Execute();
         }
     }));
 }
Пример #5
0
 public long DeleteDiscreteDetails(OrderDetail[] details)
 {
     return(Utility.Watch(delegate()
     {
         using (var db = new MegoContext())
         {
             db.OrderDetails.RemoveRange(details);
             db.Executor.Execute();
         }
     }));
 }
Пример #6
0
 public long UpdateDiscreteCustomers(Customer[] customers)
 {
     return(Utility.Watch(delegate()
     {
         using (var db = new MegoContext())
         {
             db.Customers.UpdateRange(customers);
             db.Executor.Execute();
         }
     }));
 }
Пример #7
0
 public long InsertDiscreteProducts(Product[] products)
 {
     return(Utility.Watch(delegate()
     {
         using (var db = new MegoContext())
         {
             db.Products.AddRange(products);
             db.Executor.Execute();
         }
     }));
 }
Пример #8
0
        static void Main(string[] args)
        {
            InitialDatabase();
            Tuple <int, int> customeIds;
            Tuple <int, int> orderIds;
            var insertCustomes = Enumerable.Range(100000, TestInsertCount).Select(i => new Customer()
            {
                Id       = i,
                Name     = "Customer " + i.ToString(),
                Code     = "C" + i.ToString(),
                Address1 = "A",
                Address2 = "B",
                Zip      = "Z"
            }).ToArray();
            var insertProducts = Enumerable.Range(0, TestInsertCount).Select(i => new Product()
            {
                Code       = "TP" + i.ToString(),
                Name       = "Product Test" + i.ToString(),
                Category   = 3,
                IsValid    = true,
                UpdateDate = DateTime.Now
            }).ToArray();

            OrderDetail[] deleteDetails;
            Customer[]    updateCustomes;
            Warehouse[]   deleteWarehouse;
            using (var db = new MegoContext())
            {
                customeIds      = Tuple.Create(db.Customers.Min(a => a.Id), db.Customers.Max(a => a.Id));
                orderIds        = Tuple.Create(db.Orders.Min(a => a.Id), db.Orders.Max(a => a.Id));
                updateCustomes  = db.Customers.Take(TestUpdateCount).ToArray();
                deleteDetails   = db.OrderDetails.Take(TestDeleteCount).ToArray();
                deleteWarehouse = db.Warehouses.Take(TestDeleteCount).ToArray();
            }
            foreach (var c in updateCustomes)
            {
                c.Address1 += "AAAA";
            }

            Random r          = new Random(DateTime.Now.Millisecond);
            var    frameworks = typeof(Program).Assembly.GetTypes()
                                .Where(a => !a.IsAbstract && typeof(IPerformanceTest).IsAssignableFrom(a))
                                .Select(b => Activator.CreateInstance(b)).OfType <IPerformanceTest>()
                                .ToArray();

            List <TestResultItem> results = new List <TestResultItem>();

            for (int i = 0; i < TestSumCount + 1; i++)
            {
                foreach (var framework in frameworks)
                {
                    foreach (var p in insertProducts)
                    {
                        p.Id = 0;
                    }
                    var item = new TestResultItem(framework)
                    {
                        Convert.ToInt64(Enumerable.Range(0, TestSelectCount1).Sum(a =>
                                                                                  framework.GetCustomerById(r.Next(customeIds.Item1, customeIds.Item2))
                                                                                  )),
                        Convert.ToInt64(Enumerable.Range(0, TestSelectCount2).Sum(a =>
                                                                                  framework.GetDetailsByOrder(r.Next(orderIds.Item1, orderIds.Item2))
                                                                                  )),
                        Convert.ToInt64(Enumerable.Range(0, TestSelectCount3).Sum(a =>
                                                                                  framework.GetOrderAndDetails(r.Next(orderIds.Item1, orderIds.Item2))
                                                                                  )),
                        framework.InsertDiscreteCustomers(insertCustomes),
                        framework.InsertDiscreteProducts(insertProducts),
                        framework.UpdateDiscreteCustomers(updateCustomes),
                        framework.DeleteDiscreteDetails(deleteDetails),
                        framework.DeleteDiscreteWarehouses(deleteWarehouse),
                    };
                    if (i > 0)
                    {
                        results.Add(item);
                    }
                }
            }
            Output(results);
        }