public void EntityDeleteTestForEagerLoad()
        {
            using (var testRep = new TestRepository())
            {
                testRep.Database.Delete();
            }

            using (ITestRepository testRep = new TestRepository())
            {
                var personOne = new Person {Name = "PersonOne"};
                var personTwo = new Person { Name = "PersonTwo" };
                var personThree = new Person { Name = "PersonThree" };

                var addressHome = new Address
                    {
                        Street = "HomeStreet",
                        Persons = new List<Person> {personOne, personTwo, personThree}
                    };
                Assert.IsTrue(addressHome.Persons.Count == 3, "Soft delete test failed expectation");

                testRep.Add(addressHome);
                testRep.SaveChanges();
            }

            using (ITestRepository testRep = new TestRepository())
            {
                var personOne = testRep.Query<Person>(p => p.Name == "PersonOne").FirstOrDefault();
                var addressHome = testRep.Query<Address>(a => a.Street.Contains("HomeStreet"), a => a.Persons).FirstOrDefault();
                Assert.IsTrue(addressHome.Persons.Count == 3, "Soft delete test failed expectation");
                testRep.Delete(personOne);
                testRep.SaveChanges();
            }

            using (ITestRepository testRep = new TestRepository())
            {
                var addressHome = testRep.Query<Address>(a => a.Street.Contains("HomeStreet"), a => a.Persons).FirstOrDefault();
                if (addressHome == null) throw new Exception("Soft delete test failed, addressHome is null");
                Assert.IsTrue(addressHome.Persons.Count == 2, "Soft delete test failed expectation");
            }

        }
        public void EntityDeleteTestForQuery()
        {
            using (var testRep = new TestRepository())
            {
                testRep.Database.Delete();
            }

            using (IRepository testRep = new TestRepository())
            {
                var personOne = new Person { Name = "PersonOne" };
                var personTwo = new Person { Name = "PersonTwo" };
                var personThree = new Person { Name = "PersonThree" };

                var addressHome = new Address
                {
                    Street = "HomeStreet",
                    Persons = new List<Person> { personOne, personTwo, personThree }
                };
                Assert.IsTrue(addressHome.Persons.Count == 3, "Soft delete test failed expectation");

                testRep.Add(addressHome);
                testRep.SaveChanges();
            }

            using (ITestRepository testRep = new TestRepository())
            {
                var personOne = testRep.Query<Person>(p => p.Name == "PersonOne").FirstOrDefault();
                Assert.IsNotNull(personOne, "Soft delete test failed expectation");
                testRep.Delete(personOne);
                testRep.SaveChanges();
            }

            using (ITestRepository testRep = new TestRepository())
            {
                var personOne = testRep.Query<Person>(p => p.Name == "PersonOne").FirstOrDefault();
                Assert.IsNull(personOne, "Soft delete test failed expectation");
            }
        }