2016-08-12 44 views
0

我創建了一個大的遷移,創建我的初始模式並運行數據庫更新。EF遷移中的錯誤更好地回滾,刪除,重新添加或只是簡單地添加新的

之後我發現應該是DateTime類型的字段意外地是字符串類型。我將它固定在我的模型中。

現在,我應該將數據庫更新爲發生錯誤之前的遷移,請刪除錯誤的遷移,然後重新添加遷移。或者只是簡單地添加一個只修補修補程序的新遷移。

我傾向於回滾,刪除,然後重新添加的原因是因爲我不想要任何搞砸了不正確的信息我會遷移?我覺得遷移不正確是毫無意義的。

我相信混淆對我來說是因爲我從來沒有在生產環境中使用遷移,所以我不認爲我知道他們的力量。因此,我希望有人澄清舊的遷移是否會出現錯誤,或者是否應該全部沒有錯誤,並在添加新模型/實體時顯示數據庫的整個進度。

+1

就我個人而言,我使用migrations來實現一個目的:更新遠程UAT和PROD數據庫。當我第一次開始開發綠地應用程序時,我將使用DropCreate初始化程序之一,甚至不用擔心遷移。當我準備部署時,我切換到遷移。我總是按照克里斯所描述的[這裏]滾動我的遷移(http://cpratt.co/migrating-production-database-with-entity-framework-code-first/#at_pco=smlwn-1.0&at_si=54ad5c7b61c48943&at_ab=每12&at_pos = 0&at_tot = 1)。 –

+0

@SteveGreene你使用實體框架DropCreate功能嗎?如果是這樣,你知道如何實施它在EF核心1.0(EF7) –

+0

對不起,錯過了核心標籤。它不同,但可行:使用Database.EnsureDeleted,然後使用Database.EnsureCreated。 https://github.com/aspnet/EntityFramework/issues/3042 –

回答

1

遷移只是幫助您在模式更改之間保留數據的工具。它們特別適合在團隊環境中管理多個數據庫服務器,如dev/test/production或dev-local數據庫。

如果您只有一臺服務器,那麼重寫遷移便宜,所以請繼續並以此方式進行更正。

如果您的團隊中的每個人都已應用遷移,或者您已將其應用於數據庫,並且希望保留其中的數據,那麼使用新遷移來更新列會更加簡單。

換句話說,使用遷移沒有正確或錯誤的方式,只有與重寫歷史記錄相關的成本。