We just upgraded from 6.1.7.1 to 6.1.9.0 and noticed a change in the behavior of EntityServerSaveIntercptor.ExecuteSave. We have our own custom class that inherits from EntityServerSaveInterceptor. One of the things it does is override ExecuteSave to do certain logic before the save and certain other logic after the save. In 6.1.7.1, we used to be able to look at the 'Original Values' for properties using code such as e.g. myEntity.EntityAspect.GetValue("SomeProperty", EntityVersion.Original). This code still works before we call base.ExecuteSave() but now when we do that after base.ExecuteSave(), the 'original' value ends up returning the new value that is being saved. This is breaking a lot of our logic that relied on the previous behavior. What is strange is that the entities still appear as "Added" or "Modified" entity state after calling base.ExecuteSave()....so it isn't like the entire entity thinks it has been saved. Just the original values have disappeared.
I dug a little bit into this and it looks like there was a change to EdmSaveExecutor.HandleModified(...). When I compare that method to the version in 6.1.7.1, there is an extra line that says "entity.EntityAspect.OriginalValuesMap = null". I'm guessing that is what is causing the original values to disappear. I'm not sure if there are also other changes that were made since 6.1.7.1 that contribute to this breaking change and I'm also not sure if this happened as part of 6.1.8 or 6.1.9 (since we skipped 6.1.8).
But most importantly, is this a bug? If not, is there some way to work around this changed behavior? We have lots of code that depends on this so we would like to avoid having to make big changes. Also, we didn't see any mention of this in the release notes. We just happened to notice this breakage while debugging a different issue....otherwise, who knows when we would have found it.
Thanks