假設我有一個從我的數據庫中生成的實體數據模型。我在許多地方的代碼中使用了其中一列,但有一天我決定不再需要它,所以我將它從數據庫中刪除,並且代碼中從實體數據模型引用此屬性的地方現在已被破壞。唯一的解決方案是去每個地方修復它,或者是否有任何策略或工具可以幫助這樣的場景?從許多地方使用的數據庫中刪除列時維護實體數據模型?
2
A
回答
1
此問題僅適用於尚未發佈的應用程序。如果應用程序已經發布並且該列已經存在,它將不會被刪除或刪除。現有客戶可能依賴於該列的數據,它可能與應用程序邏輯等有關。出於兼容性原因,它不會被刪除。
如果這是預生產應用程序(pre 1.0版本),任何ORM解決方案應該能夠在刪除數據庫中的物理列之後重新創建邏輯和概念模型。此時,可能會在應用程序的其他層(UI,商業等)中以某種方式引用概念模型中的某些清理。例如,用戶界面可能需要更新以刪除該數據的顯示。這需要一些人工努力。
一般來說,除非應用程序處於開發的早期階段,否則最好保留它。
1
因此,您沒有在列中指定數據並需要將其刪除,因此我們必須進行一般性討論。
如果你可以從數據庫中刪除列,但在代碼中的許多地方使用它,那麼可能是它的計算列 - 一般來說,這意味着你可以從其他數據點派生出相同的信息。因此,在您的實體模型中,您應該停止將列映射到數據庫,而是複製代碼中的邏輯以計算屬性的完整意義值。或者,您可以在表格上創建視圖並在數據庫端計算列,並將實體映射到視圖而不是表格。
如果不計算列,那麼從數據庫中刪除列意味着數據丟失。如果這是可以接受的,那麼它實質上表明瞭該數據點變得無關緊要的基礎業務模型的變化。你有兩個選擇 -
- 爲它去改變你的代碼不使用這個屬性 - 它本質上意味着你會調整你的代碼的商業模式/流程的改變,你必須最終在一段時間做。
- 將列保留在數據庫中一段時間,但具有含義完全默認值。將實體模型屬性標記爲過時,以便它將開始發出警告。花些時間對代碼進行更改,最終目標是一段時間後刪除屬性使用情況,然後刪除數據庫列。
相關問題
- 1. 從數據庫中刪除html實體
- 2. 數據庫中的實體數據模型和加密列
- 3. 數據庫從未維護
- 4. 實體框架5刪除我的數據庫更改模型
- 5. 從模型中使用實體框架從數據庫
- 6. backbone.js從數據庫刪除模型從視圖中刪除
- 7. 如何從數據庫中刪除記錄使用實體WebApi
- 8. 從列表數據庫中刪除對象實體
- 9. 數據庫維護
- 10. 如何使用實體數據模型進行軟刪除
- 11. 使用複選框從數據庫中刪除多個數據
- 12. 快速刪除數據倉庫數據中的許多行
- 13. 如何使用實體框架從數據庫模型創建數據庫
- 14. 刪除數據庫中的列數據
- 15. SQL數據庫,實體數據模型和1對1實體
- 16. 維護MVC模式,使用PHP從模型進行數據庫調用Laravel 4
- 17. 使用rspec時避免從數據庫中刪除數據
- 18. 使用jQuery從實體框架數據庫刪除記錄
- 19. ADO.NET實體數據模型從數據庫中生成並跳過列
- 20. 從C#類生成數據庫/實體數據模型
- 21. 從ADO實體數據模型創建數據庫
- 22. 刪除數據庫。實體框架
- 23. 使用事務安全地從數據庫中刪除Django模型
- 24. 使用Oracle的實體數據模型
- 25. 從數據庫MongoDB的列表中刪除數據庫名稱
- 26. 如何維護本地數據庫iphone
- 27. 從drupal7數據庫中刪除模塊
- 28. 錯誤:使用實體框架從數據庫更新模型
- 29. 數據不從數據庫中刪除
- 30. Textarea從數據庫中刪除數據
你的意思是可以例如你的程序的工具,找出代碼的意圖是*並修復它*? – R0MANARMY
這是當你「字符串類型」而不是「強類型」時發生的情況 – Eranga
@Eranga:鑑於這是實體框架,它可能是強類型的,問題是引用該屬性的所有代碼現在看起來像'someObject。[property不再存在]'而且它不能編譯。 – R0MANARMY