コード例 #1
0
        public void TestAddEntityWithHashSets()
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <Chapter14DbContext>();

            using var context = new Chapter14DbContext(options);
            context.Database.EnsureCreated();

            AddHashSet(context, 1, false);
            AddHashSet(context, 100, false);
            AddHashSet(context, 1000, false);
            context.ChangeTracker.Clear();

            //ATTEMPT
            AddHashSet(context, 1000);
            AddHashSet(context, 4000, false);
            AddHashSet(context, 1000);
            AddHashSet(context, 4000, false);
            AddHashSet(context, 1000);
            AddHashSet(context, 9000, false);
            AddHashSet(context, 1000);
            AddHashSet(context, 1000);

            //VERIFY
        }
コード例 #2
0
        private void AddMyEntities(Chapter14DbContext context, int numToAdd)
        {
            var list = new List <MyEntity>();

            for (int i = 0; i < numToAdd; i++)
            {
                list.Add(new MyEntity());
            }
            context.AddRange(list);
            context.SaveChanges();
        }
コード例 #3
0
        public void TestOneAddAndSaveChanges()
        {
            //SETUP
            var options = this.CreateUniqueClassOptions <Chapter14DbContext>();

            using var context = new Chapter14DbContext(options);
            context.Database.EnsureClean();

            //ATTEMPT
            using (new TimeThings(_output, "One Add and one SaveChanges"))
            {
                var list = new List <MyEntity>();
                for (int i = 0; i < 100; i++)
                {
                    list.Add(new MyEntity());
                }
                context.AddRange(list);
                context.SaveChanges();
            }
            using (new TimeThings(_output, "One Add and one SaveChanges"))
            {
                var list = new List <MyEntity>();
                for (int i = 0; i < 100; i++)
                {
                    list.Add(new MyEntity());
                }
                context.AddRange(list);
                context.SaveChanges();
            }
            using (new TimeThings(_output, "One Add and one SaveChanges"))
            {
                var list = new List <MyEntity>();
                for (int i = 0; i < 100; i++)
                {
                    list.Add(new MyEntity());
                }
                context.AddRange(list);
                context.SaveChanges();
            }

            //VERIFY
        }
コード例 #4
0
        private void AddHashSet(Chapter14DbContext context, int numRelations, bool showResults = true)
        {
            var count  = context.ChangeTracker.Entries <SubEntity2>().Count();
            var entity = new MyEntity();

            for (int i = 0; i < numRelations; i++)
            {
                entity.HashSets.Add(new SubEntity2());
            }
            using (new TimeThings(result =>
            {
                if (showResults)
                {
                    _output.WriteLine(result.ToString());
                }
            }, $"Add: HasSet. #tracked = {count}", numRelations))
            {
                context.Add(entity);
            }
        }
コード例 #5
0
        public void TestTimeTakenWithDifferentTracked(int numTracked)
        {
            //SETUP
            var options = SqliteInMemory.CreateOptions <Chapter14DbContext>();

            using var context = new Chapter14DbContext(options);
            context.Database.EnsureCreated();

            AddMyEntities(context, numTracked);

            //ATTEMPT
            using (new TimeThings(_output, $"{numTracked} tracked"))
            {
                context.Add(new MyEntity());
                context.SaveChanges();
            }
            using (new TimeThings(_output, $"{numTracked} tracked"))
            {
                context.Add(new MyEntity());
                context.SaveChanges();
            }
            using (new TimeThings(_output, $"{numTracked} tracked"))
            {
                context.Add(new MyEntity());
                context.SaveChanges();
            }
            using (new TimeThings(_output, $"{numTracked} tracked"))
            {
                context.Add(new MyEntity());
                context.SaveChanges();
            }

            context.ChangeTracker.DetectChanges();

            //VERIFY
        }
コード例 #6
0
        public void TestIndividualSaveChanges()
        {
            //SETUP
            var options = this.CreateUniqueClassOptions <Chapter14DbContext>();

            using var context = new Chapter14DbContext(options);
            context.Database.EnsureClean();

            //ATTEMPT
            using (new TimeThings(_output, "individual"))
            {
                for (int i = 0; i < 100; i++)
                {
                    context.Add(new MyEntity());
                    context.SaveChanges();
                }
            }
            using (new TimeThings(_output, "individual"))
            {
                for (int i = 0; i < 100; i++)
                {
                    context.Add(new MyEntity());
                    context.SaveChanges();
                }
            }
            using (new TimeThings(_output, "individual"))
            {
                for (int i = 0; i < 100; i++)
                {
                    context.Add(new MyEntity());
                    context.SaveChanges();
                }
            }

            //VERIFY
        }