Nếu bạn muốn tải lại các thực thể cụ thể, với DbContextApi, RX_DID_RX đã cho bạn câu trả lời.
Nếu bạn muốn tải lại / làm mới tất cả các thực thể bạn đã tải:
Nếu bạn đang sử dụng Entity Framework 4.1+ (có thể là EF5 hoặc EF 6), API DbContext:
public void RefreshAll()
{
foreach (var entity in ctx.ChangeTracker.Entries())
{
entity.Reload();
}
}
Nếu bạn đang sử dụng entityFramework 4 (API ObjectContext):
public void RefreshAll()
{
// Get all objects in statemanager with entityKey
// (context.Refresh will throw an exception otherwise)
var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Deleted
| EntityState.Modified
| EntityState.Unchanged)
where entry.EntityKey != null
select entry.Entity);
context.Refresh(RefreshMode.StoreWins, refreshableObjects);
}
Lời khuyên tốt nhất là, hãy cố gắng sử dụng một "bối cảnh tồn tại trong thời gian ngắn" và bạn sẽ tránh được loại vấn đề này.
Tôi đã viết một vài bài báo về vấn đề này:
https://christianarg.wordpress.com/2013/06/13/entityframework-refreshall-loaded-entities-from-database/