Mutable ObjectVisitationHelper with a cleaner method TryVisit = IsVisited + Visit
As it turned out none of the recursive algorithms except ApplyChanges has actually needed the advanced visitation strategy (if there exist two ways to reach a certain graph node, then both ones must be walked completely). So with the mutable ObjectVisitationHelper each graph node is visited exactly once.
This should also improve the performance.
Revealed during code review: `TrackableExtensions.GetChanges` must inspect M-M relationships recursively as it used to be prior to 0143728
Simplify unit test `Accept_Changes_Should_Mark_Employee_With_Territories_Unchanged`
Merge branch 'circular-refs' of https://github.com/azabluda/TrackableEntitiesContrib into azabluda-circular-refs
Added two tests. First test was needed to validate change in commit ea5c7705. Second test is just for better code coverage on DbContext.ApplyChanges.
1. GetChanges_On_Existing_Employee_With_Territory_And_Modified_Area_Should_Return_Marked_Territory
- This ensures that changes are retrieved across M-M relations.
2. Apply_Changes_Should_Mark_Unchanged_Employee_As_Unchanged_And_Unchanged_Territories_With_Modified_Area_As_Modified
- This ensures that changes are applied across M-M relations.
Updated NuGet packages for v2.1.1-beta1.
Merge branch 'az-local' into MY_master
Remove duplicate function GetRefPropChangeTracker. Use GetRefPropertyChangeTracker instead
New interface IRefPropertyChangeTrackerResolver for entities, 1-1 and M-1 properties of which have non-standard names or locations of the corresponding change trackers.
Rename NorthwindModels.Territory's property AreaChangeTracker to AreaChangeTracker_NON_STANDARD which causes many unit test to fail
NorthwindModels.Territory implements IRefPropertyChangeTrackerResolver and all unit tests pass again