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}"); } }
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("."); } } } }