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