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