Normally, Entity Framework knows two kinds of entities:
However, things can get more complicated; imagine, for a second, that you loaded one or more entities from a context in an ASP.NET web application and you stored them in the ASP.NET session. Because your DbContext
normally only lives for the duration of an HTTP request, in the next request, you will get another one, which knows nothing about these entities. Another example would be if you loaded an entity from a query and accidentally made changes to it that you don't want to persist.
The solution for both these cases is to change the Entity Framework's perceived state of the entity (or entities). Let's see how this can be done.