In trying to use EF TPH with the State Pattern we create a new .NET Object that represents the new state and essentially clone the object's values from the prior state (including and especially the primary key). We then AttachAsModified the new object
to the context and do a SaveChanges - that works in EF today except it doesn't include the new discriminator column value in the update statement (it doesn't include that column in the update at all).
To your second question of what would you do when you do a query and now the types are different - I would imagine today that what happens is that when you query and the object has been modified by some other process you then update the values of the object
being tracked - in the case where the type is different rather than update - you dump the old object and start tracking the new one (because it is now a different type).
Would it strengthen the case for consideration of doing something like this if it was upvoted on UserVoice?