[WorkItem(188918)]  // CSDMain
        public void HierarchicalChangeTracking_RejectChanges_MultipleChildChanges()
        {
            CompositionScenarios_Explicit ctxt = new CompositionScenarios_Explicit(CompositionScenarios_Explicit_Uri);
            Parent parent = CreateCompositionHierarchy(3, 3);
            ctxt.Parents.Attach(parent);

            // update the child first
            Child child = parent.Children.First();
            child.OperationResult = "complete";
            // update the grandchild
            child.Children.First().OperationResult = "complete";
            // add a new grandchild
            GrandChild newGrandChild = new GrandChild { ID = 25 };
            child.Children.Add(newGrandChild);

            // Reject changes should revert child before either grandchild (alpha order). We need
            // to make sure this works with multiple grandchildren.
            ctxt.RejectChanges();

            EntityChangeSet cs = ctxt.EntityContainer.GetChanges();
            Assert.IsTrue(cs.IsEmpty, "cs.IsEmpty is false");
            Assert.AreEqual(EntityState.Unmodified, child.EntityState, "EntityState.Unmodified != child.EntityState");
        }
        public void HierarchicalChangeTracking_RejectChanges_Bug799365()
        {
            CompositionScenarios_Explicit ctxt = new CompositionScenarios_Explicit(CompositionScenarios_Explicit_Uri);
            Parent parent = CreateCompositionHierarchy(3, 3);
            ctxt.Parents.Attach(parent);

            // add a new child then reject changes
            Child newChild = new Child { ID = 25 };
            parent.Children.Add(newChild);
            EntityChangeSet cs = ctxt.EntityContainer.GetChanges();
            Assert.IsTrue(cs.AddedEntities.Count == 1 && cs.ModifiedEntities.Count == 1);

            ctxt.RejectChanges();

            cs = ctxt.EntityContainer.GetChanges();
            Assert.IsTrue(cs.IsEmpty);
            Assert.AreEqual(EntityState.Detached, newChild.EntityState);
        }