Beispiel #1
0
        private static void DeleteOptimized()
        {
            // Makes two queries - one read and one delete
            using (var db = new CatsDbContext())
            {
                var cat = db.Cats.Find(15);

                db.Remove(cat);

                db.SaveChanges();
            }

            // Makes one query - only delete
            using (var db = new CatsDbContext())
            {
                var cat = new Cat {
                    Id = 16
                };

                db.Remove(cat);

                db.SaveChanges();
            }

            // Delete multiple rows - slow
            using (var db = new CatsDbContext())
            {
                var catsToDelete = db.Cats
                                   .Where(c => c.Age == 9)
                                   .Select(c => c.Id);

                db.RemoveRange(catsToDelete.Select(id => new Cat {
                    Id = id
                }));

                db.SaveChanges();
            }

            // Delete multiple rows - fast with SQL
            using (var db = new CatsDbContext())
            {
                db.Database
                .ExecuteSqlInterpolated($"DELETE FROM Cats WHERE Age = {9}");
            }
        }
Beispiel #2
0
        private static void SeedData()
        {
            using (var db = new CatsDbContext())
            {
                db.Database.Migrate();

                db.ChangeTracker.AutoDetectChangesEnabled = true;

                for (int i = 1; i <= 10000; i++)
                {
                    var owner = new Owner
                    {
                        Name = $"Owner {i}"
                    };

                    for (int j = 1; j <= 10; j++)
                    {
                        owner.Cats.Add(new Cat
                        {
                            Name      = $"Cat {i} {j}",
                            Color     = j % 2 == 0 ? "Black" : "White",
                            BirthDate = DateTime.Now.AddDays(-j),
                            Age       = j
                        });
                    }

                    db.Owners.Add(owner);

                    if (i % 200 == 0)
                    {
                        db.SaveChanges();
                        Console.Write(".");
                    }
                }
            }
        }