This is not the way you are supposed to use DbContext
, and because of that it is almost impossible to reload the data. Keeping a single context around for a long time is incorrect usage. The link will also answer why your tracked entities are not updated.
You can selectively reload a single entity by calling Reload
on DbEntityEntry
:
context.Entry(entity).Reload();
You can also revert back to ObjectContext
and use ObjectQuery
with MergeOption.OverrideChanges
, or use Refresh
for a collection of entities with RefreshMode.StoreWins
.
All these approaches suffers some problems:
- If the record is deleted in the database, it will not be removed from the context.
- Changes in relations are not always refreshed.
The only correct way to get fresh data is Dispose
the context, create a new one and load everything from scratch – and you are doing this anyway.