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(); } })); }
public long GetDetailsByOrder(int orderId) { return(Utility.Watch(delegate() { using (var db = new MegoContext()) { var data = db.OrderDetails.Where(a => a.OrderId == orderId).ToArray(); } })); }
public long GetCustomerById(int id) { return(Utility.Watch(delegate() { using (var db = new MegoContext()) { var data = db.Customers.FirstOrDefault(a => a.Id == id); } })); }
public long DeleteDiscreteWarehouses(Warehouse[] warehouses) { return(Utility.Watch(delegate() { using (var db = new MegoContext()) { db.Warehouses.RemoveRange(warehouses); db.Executor.Execute(); } })); }
public long DeleteDiscreteDetails(OrderDetail[] details) { return(Utility.Watch(delegate() { using (var db = new MegoContext()) { db.OrderDetails.RemoveRange(details); db.Executor.Execute(); } })); }
public long UpdateDiscreteCustomers(Customer[] customers) { return(Utility.Watch(delegate() { using (var db = new MegoContext()) { db.Customers.UpdateRange(customers); db.Executor.Execute(); } })); }
public long InsertDiscreteProducts(Product[] products) { return(Utility.Watch(delegate() { using (var db = new MegoContext()) { db.Products.AddRange(products); db.Executor.Execute(); } })); }
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); }