我怎麼能刷新我的上下文?我有基於從我的數據庫視圖的實體,當我對一個具有導航屬性視圖的表進行更新時,實體更新,但視圖不刷新符合新的更新...只是想重新從Db的數據。 謝謝!實體框架刷新上下文?
回答
在您的上下文中刷新實體的最佳方式是處理您的上下文並創建一個新的上下文。
如果你真的需要刷新一些實體和你使用的是帶有的DbContext類代碼第一種方法,你可以使用
public static void ReloadEntity<TEntity>(
this DbContext context,
TEntity entity)
where TEntity : class
{
context.Entry(entity).Reload();
}
要重新加載集合導航屬性,你可以使用
public static void ReloadNavigationProperty<TEntity, TElement>(
this DbContext context,
TEntity entity,
Expression<Func<TEntity, ICollection<TElement>>> navigationProperty)
where TEntity : class
where TElement : class
{
context.Entry(entity).Collection<TElement>(navigationProperty).Query();
}
我已經讓自己的頭受傷了!答案很簡單 - 我只是回到基礎...
some_Entities e2 = new some_Entities(); //your entity.
加入這一行,你更新後低於/刪除 - 您正在重新載入你的實體,沒有花哨的系統方法。
e2 = new some_Entities(); //reset.
您是否在正確的問題? –
如果要重新加載特定的實體,與DbContextApi,RX_DID_RX已經給了你答案。
如果要重新加載/刷新所有您所加載的實體:
如果您正在使用實體框架4.1+(EF5,或EF 6可能),API的DbContext:
public void RefreshAll()
{
foreach (var entity in ctx.ChangeTracker.Entries())
{
entity.Reload();
}
}
如果您正在使用的EntityFramework 4(ObjectContext的API):
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);
}
最好的建議就是無論如何,嘗試使用「短命語境」,你會避免這種問題。
我寫了幾篇文章對此事:不建議
與刷新刷新分貝範圍內,由於性能損失的方式。在執行每個操作之前初始化dbcontext的新實例已經足夠好了。它還爲您提供每次操作刷新的最新上下文。
using (YourContext ctx = new YourContext())
{
//Your operations
}
多德..傾倒你的情況下,每次也將刷新你不想做被刷新的東西,這真的會導致性能問題。 – LuckyLikey
這是一個可怕的想法,因爲它影響到編寫單元測試的能力。如果你的代碼消失並且產生新的上下文,那麼在單元測試期間如何工作? – victor
如果你展示一些樣品而不是批評,這對我和其他人會有用。 – aog
context.Reload()在MVC 4,EF 5中不適用於我,所以我做了這個。
context.Entry(entity).State = EntityState.Detached;
entity = context.Find(entity.ID);
及其工作正常。
- 1. WPF實體框架刷新一個上下文實體
- 2. 如何刷新實體框架中的上下文
- 3. 刷新ViewModel的實體框架上下文
- 4. 實體框架4.1 - 刷新不是上下文的成員
- 5. 實體框架上下文6.1.3未刷新/銷燬?
- 6. 實體框架上下文?
- 7. 實體框架上下文
- 8. 實體框架刷新實體不刷新其外鍵
- 9. 實體框架4.1識別上下文中的新實體
- 10. 實體框架告訴上下文實體已更新
- 11. 實體框架刷新數據
- 12. 刷新數據使用實體框架
- 13. 實體框架不正確刷新
- 14. 實體框架緩存刷新
- 15. 實體框架:通過上下文
- 16. 實體框架4上下文?
- 17. 實體框架上下文問題
- 18. 實體框架上下文的接口
- 19. 如何分配上下文並在實體框架中刷新它?
- 20. 上下文中的實體框架上下文
- 21. 實體框架 - 從上下文創建上下文
- 22. 工作單元和實體框架5不刷新實體
- 23. 實體框架5:提交不刷新內存中的實體
- 24. 實體框架5.0上下文重新加載
- 25. 實體框架5:上下文已更新,但不是查看
- 26. 上下文關閉後從實體獲取OriginalValues實體框架
- 27. 實體框架實體總是連接上下文
- 28. 實體框架和WCF(返回附加到上下文實體)
- 29. 創建實體框架實例上下文環境下降
- 30. 實體框架對象上下文保存未添加的新實體
這在Entity Framework 6中不起作用 – JMK
@JMK什麼東西在這裏不起作用?它似乎對我很好(EF 6.1.1)。 –
@SebastianKrysmanski我將近一年前的評論,也許它已得到修復,因爲? – JMK