コード例 #1
0
        public void DeleteNotExistingEntities2()
        {
            var p0 = new Person
            {
                FirstName = "Angelica",
                LastName  = "Tånneryd",
                BirthDate = DateTime.Now
            };
            var p1 = new Person
            {
                FirstName      = "Arvid",
                LastName       = "Tånneryd",
                BirthDate      = DateTime.Now,
                EmployeeNumber = 0,
                Mother         = p0
            };
            var p2 = new Person
            {
                FirstName      = "Viktor",
                LastName       = "Tånneryd",
                BirthDate      = DateTime.Now,
                EmployeeNumber = 0,
                Mother         = p0
            };

            using (var db = new UnitTestContext())
            {
                db.People.AddRange(new[] { p0, p1, p2 });
                db.SaveChanges();

                var people = db.People.OrderBy(p => p.FirstName).ToArray();
                Assert.AreEqual(3, people.Length);
                Assert.AreEqual(p0.Id, people[0].Id);
                Assert.AreEqual(p1.Id, people[1].Id);
                Assert.AreEqual(p2.Id, people[2].Id);

                // Delete all children of p0 in the database
                // that are not in the Items list. Make sure
                // that we can differentiate between null and
                // column default values.
                // Setting the EmployeeNumber values to null
                // should make those two objects NOT match
                // with the records in the database and thus
                // only the mother record should be left after
                // this operation.
                p1.EmployeeNumber = null;
                p2.EmployeeNumber = null;
                db.BulkDeleteNotExisting <Person, Person>(new BulkDeleteRequest <Person>(
                                                              new[] { new SqlCondition("MotherId", p0.Id) },
                                                              new[] { "FirstName", "EmployeeNumber", "LastName" })
                {
                    Items = new[] { p1, p2 }.ToList()
                });

                people = db.People.OrderBy(p => p.FirstName).ToArray();
                Assert.AreEqual(1, people.Length);
                Assert.AreEqual(p0.Id, people[0].Id);
            }
        }
コード例 #2
0
        public void DeleteNotExistingEntities()
        {
            var p0 = new Person
            {
                FirstName = "Angelica",
                LastName  = "Tånneryd",
                BirthDate = DateTime.Now
            };
            var p1 = new Person
            {
                FirstName = "Arvid",
                LastName  = "Tånneryd",
                BirthDate = DateTime.Now,
                Mother    = p0
            };
            var p2 = new Person
            {
                FirstName = "Inga-Lill",
                LastName  = "Tånneryd",
                BirthDate = DateTime.Now
            };
            var p3 = new Person
            {
                FirstName = "Linus",
                LastName  = "Tånneryd",
                BirthDate = DateTime.Now,
                Mother    = p0
            };
            var p4 = new Person
            {
                FirstName = "Måns",
                LastName  = "Tånneryd",
                BirthDate = DateTime.Now,
                Mother    = p2
            };
            var p5 = new Person
            {
                FirstName = "Viktor",
                LastName  = "Tånneryd",
                BirthDate = DateTime.Now,
                Mother    = p0
            };

            using (var db = new UnitTestContext())
            {
                db.People.AddRange(new[] { p0, p1, p2, p3, p4, p5 });
                db.SaveChanges();

                var people = db.People.OrderBy(p => p.FirstName).ToArray();
                Assert.AreEqual(6, people.Length);
                Assert.AreEqual(p0.Id, people[0].Id);
                Assert.AreEqual(p1.Id, people[1].Id);
                Assert.AreEqual(p2.Id, people[2].Id);
                Assert.AreEqual(p3.Id, people[3].Id);
                Assert.AreEqual(p4.Id, people[4].Id);
                Assert.AreEqual(p5.Id, people[5].Id);

                // Delete all children of p0 in the database
                // that are not in the Items list.
                db.BulkDeleteNotExisting <Person, Person>(new BulkDeleteRequest <Person>(
                                                              new[] { new SqlCondition("MotherId", p0.Id) },
                                                              new[] { "FirstName", "LastName" })
                {
                    Items = new[] { p1, p3 }.ToList()
                });

                people = db.People.OrderBy(p => p.FirstName).ToArray();
                Assert.AreEqual(5, people.Length);
                Assert.AreEqual(p0.Id, people[0].Id);
                Assert.AreEqual(p1.Id, people[1].Id);
                Assert.AreEqual(p2.Id, people[2].Id);
                Assert.AreEqual(p3.Id, people[3].Id);
                Assert.AreEqual(p4.Id, people[4].Id);
            }
        }