private void ReloadWithNewRepositoryAndAssertDoesNotExist(Person expected)
        {
            _SystemUnderTest = null;

            var actual = SystemUnderTest.GetById(expected.Id);

            Assert.IsNull(actual, "Should not exist and this value should be null.");
        }
        private void ReloadWithNewRepositoryAndAssert(Person expected)
        {
            _SystemUnderTest = null;

            var actual = SystemUnderTest.GetById(expected.Id);

            Assert.AreEqual <string>(expected.FirstName, actual.FirstName, "FirstName");
            Assert.AreEqual <string>(expected.LastName, actual.LastName, "LastName");

            Assert.AreEqual <int>(expected.Facts.Count, actual.Facts.Count, "Facts.Count");
        }
        private void ReloadWithNewRepositoryAndAssertRelationshipsAreEmpty(Person expected)
        {
            _SystemUnderTest = null;

            var actual = SystemUnderTest.GetById(expected.Id);

            Assert.AreEqual <string>(expected.FirstName, actual.FirstName, "FirstName");
            Assert.AreEqual <string>(expected.LastName, actual.LastName, "LastName");

            Assert.IsNotNull(actual.Relationships, "Relationships collection was null.");
            Assert.AreEqual <int>(0, actual.Relationships.Count, "Relationship count was wrong.");
        }
        public void SqlEntityFrameworkPersonRepository_SavePerson_ModifyDetachedInstance()
        {
            // arrange
            var original = CreateTestPerson();

            SystemUnderTest.Save(original);

            _SystemUnderTest = null;

            var toBeModified = new Person();

            toBeModified.Id        = original.Id;
            toBeModified.FirstName = "modified_fn";
            toBeModified.LastName  = "modified_ln";

            // act
            SystemUnderTest.Save(toBeModified);

            // assert
            ReloadWithNewRepositoryAndAssert(toBeModified);
        }