29

開始在包管理器控制檯中使用add-migration命令爲我的模型生成遷移。我的問題是,上下方法。我假設down方法的目的是刪除所有的依賴關係,如果它們已經在數據庫中,就刪除這些表。此外,down方法將在up方法之前執行? up方法是相反的,創建/更新表/索引等?C#代碼 - 第一次遷移,上/下?

有時,當我使用這個然後down方法獲得很多創建表,然後被刪除?最近它創建並刪除了很多表格,並且在up方法中發生了幾乎相同的事情。爲什麼?

回答

53

Up方法將您的數據庫從其當前狀態(由您先前的遷移表示)升級到當前代碼遷移所期望的狀態。 Down方法執行反向操作 - 它從當前遷移中刪除所有更改並將數據庫恢復到上一次遷移所期望的狀態。這就像安裝/卸載遷移。當您致電update-database時,只執行其中一種方法。要使用Down方法,您必須明確指定升級的目標遷移。如果目標遷移是舊遷移,遷移API將自動使用Down方法並降級您的數據庫。

20

只需添加到@Ladislav Mrnka。我需要使用向下()的第一次和我花了一些時間,使其工作,所以:

Update-Database -Target:201407242157114_46 

當我最後的遷移是47(其中加入新的東西)。 Here's a nice explanation如何回滾數據庫並刪除錯誤的遷移。

希望它可以幫助其他魔術師的學徒:)