Tôi muốn làm mới tất cả các đơn vị của DbContext
của tôi mà không tái tạo nó, tôi đã thử sau đây và không ai trong số họ có ý nghĩa:Làm thế nào để Refresh DbContext
var context = ((IObjectContextAdapter)myDbContext).ObjectContext;
var refreshableObjects = (from entry in context.ObjectStateManager.GetObjectStateEntries(
EntityState.Added
| EntityState.Deleted
| EntityState.Modified
| EntityState.Unchanged)
where entry.EntityKey != null
select entry.Entity);
context.Refresh(RefreshMode.StoreWins, refreshableObjects);
//.......................................................................
foreach (var entry in this.Orm.ChangeTracker.Entries())
{
entry.State = EntityState.Unchanged;
}
this.Orm.ChangeTracker.DetectChanges();
Và người duy nhất mà làm mới của tôi DbContext
:
foreach (var i in this.Orm.ChangeTracker.Entries())
i.Reload();
Nhưng quá chậm. Bạn có thể giúp tôi chọn đúng cách không?
Bạn đã thử context.Refresh (RefreshMode, Entity) và xem trong trình gỡ lỗi và sql màn hình nếu nó thực sự được cập nhật? – yonexbat
@yonexbat: Tôi đã tự thay đổi dữ liệu trong sql và được gọi là 'context.Refresh (RefreshMode, Entity)' nhưng không thay đổi được cập nhật và thực hiện cùng kịch bản với 'i.Reload();' và tất cả các thay đổi được cập nhật trong 'DbContext'. – Mohsen