Entity Framework 4.1 DbSet Reload

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.

Leave a Comment