我一直在更新我的實體框架只需右鍵單擊並點擊「從數據庫更新模型」。我通常會在「添加」選項卡下進行操作,然後單擊表格並單擊完成。我也有時使用「刷新」。這些有什麼區別?當我刷新或添加有時實體出錯或將一些舊信息保存在緩存中時,我怎麼才能讓實體匹配我的數據庫並清除任何舊的緩存事物。如何更新我的實體框架
回答
它不會清除舊的項目。你必須自己刪除這些。從積極的方面來看,Visual Studio在編譯時會給你一個錯誤,說明一個或兩個未被映射的錯誤。實體框架工具更多的是代碼生成器。它根據數據庫的結構生成類,而不是綁定到數據庫以獲取結構信息。
是的,你是對的。設計人員有點bug,並且不能很好地處理某些模式更改。通常,當我將數據表添加到數據庫時,我運行Update model from database
並在Add
選項卡中選擇表。工作正常。如果我添加一個字段到現有的表,我做Update model
和Refresh
。工作得很好。
但是,如果我添加一個字段並刪除另一個字段,或重命名一個現有的字段(據我所知),EF不能正確處理這個字段(添加一個新字段,但未能刪除舊字段,其中一個未映射,模型驗證失敗)。所以在那些更復雜的情況下,我通常會刪除實體,然後再次執行Update model from database
和Add
。
缺點是,如果您確實進行了一些更改(例如重命名實體的某些字段或導航屬性),則必須再次進行這些更改。
設計人員並沒有問題,它不處理某些更改的原因是因爲CSDL和用戶所做的某些MSL修改不會被覆蓋。 CSDL是您在設計器中看到的圖表,MSL是您的實體和關聯的映射。
相信我,這是比沒有更新存在的Linq-to-sql向前邁出的一大步,當你想刷新你的模型時,你總是必須刪除所有變更。如果你做了很多修改,你也可以在EF設計器中刪除你的實體。 EF設計師提供了更新或重新創建(通過刪除舊的)的選擇。
'「設計器不是bug,它不處理某些更改的原因是因爲CSDL和用戶創建的一些MSL修改不會被覆蓋」'在運行更新模型時會導致*特性*(不是bug!)從數據庫;) – Yakimych 2011-03-20 16:59:57
它是越野車,取決於你正在使用VS的版本。有時它不處理表關聯和其他一些東西。 – 2013-12-15 12:28:51
- 1. 更新實體框架中的實體
- 2. 如何在實體框架中更新?
- 3. 實體框架如何跟蹤更新?
- 4. 實體框架如何更新子表
- 5. 實體框架更新?
- 6. 實體框架更新
- 7. 實體框架更新
- 8. 實體框架更新
- 9. 實體框架,WCF&更新
- 10. 實體框架:更新實體時更新另一個實體
- 11. 實體框架更新實體錯誤
- 12. 更新子實體實體框架
- 13. 實體框架更新相關實體
- 14. 實體框架和MySql更新實體
- 15. 實體框架:更新相關實體
- 16. 實體框架更新導航實體
- 17. 實體框架更新實體?
- 18. 如何更新實體框架中的相關實體
- 19. 實體框架如何正確更新一個實體代碼?
- 20. 實體框架4 POCO如何更新實體?
- 21. 如何在實體框架中手動更新實體
- 22. 如何更新實體在實體框架4 .NET
- 23. 如何簡單地在實體框架中更新實體?
- 24. 更新與實體框架自我跟蹤實體
- 25. 如何更新與嵌套實體的實體與AutoMapper和保存更新的實體與實體框架?
- 26. 我如何批量更新實體框架?
- 27. 我如何自動更新實體框架功能導入
- 28. 當實體更新時,實體框架不更新外鍵
- 29. 更新實體不更新導航屬性 - 實體框架
- 30. 實體框架更新更改
我不知道刷新是什麼;它似乎沒有刷新任何東西!我總是刪除實體,然後使用添加選項。 – 2011-03-20 02:02:46