public void InitializeAndSaveChanges_AdventureWorks(MetricCollector collector, int count)
            {
                using (collector.StartCollection())
                {
                    for (int i = 0; i < count; i++)
                    {
                        using (var context = AdventureWorksFixture.CreateContext())
                        {
                            context.Currency.Add(new Currency
                            {
                                CurrencyCode = "TMP",
                                Name         = "Temporary"
                            });

                            using (context.Database.BeginTransaction())
                            {
                                context.SaveChanges();

                                // Don't mesure transaction rollback
                                collector.StopCollection();
                            }
                            collector.StartCollection();
                        }
                    }
                }
            }
        public void Mixed(MetricCollector collector)
        {
            using (var context = _fixture.CreateContext())
            {
                using (context.Database.BeginTransaction())
                {
                    var customers = context.Customers.ToArray();

                    for (var i = 0; i < 333; i++)
                    {
                        context.Customers.Add(new Customer {
                            Name = "New Customer " + i
                        });
                    }

                    for (var i = 0; i < 1000; i += 3)
                    {
                        context.Customers.Remove(customers[i]);
                    }

                    for (var i = 1; i < 1000; i += 3)
                    {
                        customers[i].Name += " Modified";
                    }

                    collector.StartCollection();
                    var records = context.SaveChanges();
                    collector.StopCollection();

                    Assert.Equal(1000, records);
                }
            }
        }
Beispiel #3
0
 public void Count(MetricCollector collector)
 {
     using (var context = _fixture.CreateContext())
     {
         collector.StartCollection();
         var result = context.Products.Count();
         collector.StopCollection();
         Assert.Equal(1000, result);
     }
 }
Beispiel #4
0
 public void OrderBy(MetricCollector collector)
 {
     using (var context = _fixture.CreateContext())
     {
         collector.StartCollection();
         var result = context.Products.OrderBy(p => p.Retail).ToList();
         collector.StopCollection();
         Assert.Equal(1000, result.Count);
     }
 }
Beispiel #5
0
 public void Projection(MetricCollector collector)
 {
     using (var context = _fixture.CreateContext())
     {
         collector.StartCollection();
         var result = context.Products.Select(p => new { p.Name, p.Retail }).ToList();
         collector.StopCollection();
         Assert.Equal(1000, result.Count);
     }
 }
Beispiel #6
0
 public void Include(MetricCollector collector)
 {
     using (var context = _fixture.CreateContext())
     {
         collector.StartCollection();
         var result = context.Customers.Include(c => c.Orders).ToList();
         collector.StopCollection();
         Assert.Equal(1000, result.Count);
         Assert.Equal(2000, result.SelectMany(c => c.Orders).Count());
     }
 }
Beispiel #7
0
        public void LoadAll(MetricCollector collector, bool tracking, bool caching)
        {
            using (var context = _fixture.CreateContext(queryCachingEnabled: caching))
            {
                var query = context.Products.ApplyTracking(tracking);

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(1000, result.Count);
            }
        }
Beispiel #8
0
        public void Count(MetricCollector collector, bool caching)
        {
            using (var context = _fixture.CreateContext(queryCachingEnabled: caching))
            {
                var query = context.Products;

                collector.StartCollection();
                var result = query.Count();
                collector.StopCollection();
                Assert.Equal(1000, result);
            }
        }
Beispiel #9
0
        public void Projection(MetricCollector collector, bool caching)
        {
            using (var context = _fixture.CreateContext(queryCachingEnabled: caching))
            {
                var query = context.Products
                            .Select(p => new { p.Name, p.Retail });

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(1000, result.Count);
            }
        }
        public void BuildModel_AdventureWorks(MetricCollector collector)
        {
            collector.StartCollection();

            var builder = new DbModelBuilder();

            AdventureWorksContext.ConfigureModel(builder);
            var model = builder.Build(new SqlConnection(AdventureWorksFixtureBase.ConnectionString));

            collector.StopCollection();

            Assert.Equal(67, model.ConceptualModel.EntityTypes.Count());
        }
Beispiel #11
0
        public void OrderBy(MetricCollector collector, bool tracking)
        {
            using (var context = _fixture.CreateContext())
            {
                var query = context.Products
                            .ApplyTracking(tracking)
                            .OrderBy(p => p.Retail);

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(1000, result.Count);
            }
        }
Beispiel #12
0
        public void SkipTake(MetricCollector collector)
        {
            using (var context = _fixture.CreateContext())
            {
                collector.StartCollection();
                var result = context.Products
                             .OrderBy(p => p.ProductId)
                             .Skip(500).Take(500)
                             .ToList();

                collector.StopCollection();
                Assert.Equal(500, result.Count);
            }
        }
Beispiel #13
0
        public void QueryParents(MetricCollector collector)
        {
            using (var context = _fixture.CreateContext())
            {
                context.Orders.ToList();

                collector.StartCollection();
                var customers = context.Customers.ToList();
                collector.StopCollection();

                Assert.Equal(100, context.ChangeTracker.Entries <Customer>().Count());
                Assert.Equal(100, context.ChangeTracker.Entries <Order>().Count());
                Assert.All(customers, c => Assert.Equal(1, c.Orders.Count));
            }
        }
Beispiel #14
0
        public void Where(MetricCollector collector, bool tracking, bool caching)
        {
            using (var context = _fixture.CreateContext())
            {
                var query = context.Products
                            .ApplyCaching(caching)
                            .ApplyTracking(tracking)
                            .Where(p => p.Retail < 15);

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(500, result.Count);
            }
        }
Beispiel #15
0
        public void Include(MetricCollector collector, bool tracking, bool caching)
        {
            using (var context = _fixture.CreateContext(queryCachingEnabled: caching))
            {
                var query = context.Customers
                            .ApplyTracking(tracking)
                            .Include(c => c.Orders);

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(1000, result.Count);
                Assert.Equal(2000, result.SelectMany(c => c.Orders).Count());
            }
        }
Beispiel #16
0
        public void QueryChildren(MetricCollector collector)
        {
            using (var context = _fixture.CreateContext())
            {
                context.Customers.ToList();

                collector.StartCollection();
                var orders = context.Orders.ToList();
                collector.StopCollection();

                Assert.Equal(100, context.ChangeTracker.Entries <Customer>().Count());
                Assert.Equal(100, context.ChangeTracker.Entries <Order>().Count());
                Assert.All(orders, o => Assert.NotNull(o.Customer));
            }
        }
Beispiel #17
0
        public void SkipTake(MetricCollector collector, bool tracking, bool caching)
        {
            using (var context = _fixture.CreateContext(queryCachingEnabled: caching))
            {
                var query = context.Products
                            .ApplyTracking(tracking)
                            .OrderBy(p => p.ProductId)
                            .Skip(500).Take(500);

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(500, result.Count);
            }
        }
Beispiel #18
0
        public void ProjectionAcrossNavigation(MetricCollector collector)
        {
            using (var context = _fixture.CreateContext())
            {
                collector.StartCollection();
                var result = context.Orders.Select(o => new
                {
                    CustomerName = o.Customer.Name,
                    OrderDate    = o.Date
                })
                             .ToList();

                collector.StopCollection();
                Assert.Equal(2000, result.Count);
            }
        }
Beispiel #19
0
        public void BuildModel_AdventureWorks(MetricCollector collector)
        {
            collector.StartCollection();

            var conventions = new SqlServerConventionSetBuilder()
                              .AddConventions(new CoreConventionSetBuilder().CreateConventionSet());

            var builder = new ModelBuilder(conventions);

            AdventureWorksContext.ConfigureModel(builder);

            var model = builder.Model;

            collector.StopCollection();

            Assert.Equal(67, model.EntityTypes.Count());
        }
Beispiel #20
0
        public void ProjectionAcrossNavigation(MetricCollector collector, bool caching)
        {
            using (var context = _fixture.CreateContext(queryCachingEnabled: caching))
            {
                // TODO Use navigation for projection when supported (#325)
                var query = context.Orders.Join(
                    context.Customers,
                    o => o.CustomerId,
                    c => c.CustomerId,
                    (o, c) => new { CustomerName = c.Name, OrderDate = o.Date });

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(2000, result.Count);
            }
        }
Beispiel #21
0
        public void Update(MetricCollector collector, bool disableBatching)
        {
            using (var context = _fixture.CreateContext(disableBatching))
            {
                using (context.Database.BeginTransaction())
                {
                    foreach (var customer in context.Customers)
                    {
                        customer.Name += " Modified";
                    }

                    collector.StartCollection();
                    var records = context.SaveChanges();
                    collector.StopCollection();

                    Assert.Equal(1000, records);
                }
            }
        }
Beispiel #22
0
        public void GroupBy(MetricCollector collector, bool caching)
        {
            using (var context = _fixture.CreateContext(queryCachingEnabled: caching))
            {
                var query = context.Products
                            .GroupBy(p => p.Retail)
                            .Select(g => new
                {
                    Retail   = g.Key,
                    Products = g
                });

                collector.StartCollection();
                var result = query.ToList();
                collector.StopCollection();
                Assert.Equal(10, result.Count);
                Assert.All(result, g => Assert.Equal(100, g.Products.Count()));
            }
        }
        public void Delete(MetricCollector collector)
        {
            using (var context = _fixture.CreateContext())
            {
                using (context.Database.BeginTransaction())
                {
                    foreach (var customer in context.Customers)
                    {
                        context.Customers.Remove(customer);
                    }

                    collector.StartCollection();
                    var records = context.SaveChanges();
                    collector.StopCollection();

                    Assert.Equal(1000, records);
                }
            }
        }
        public void Insert(MetricCollector collector)
        {
            using (var context = _fixture.CreateContext())
            {
                using (context.Database.BeginTransaction())
                {
                    for (var i = 0; i < 1000; i++)
                    {
                        context.Customers.Add(new Customer {
                            Name = "New Customer " + i
                        });
                    }

                    collector.StartCollection();
                    var records = context.SaveChanges();
                    collector.StopCollection();

                    Assert.Equal(1000, records);
                }
            }
        }