2013-10-02 120 views
20

我正在嘗試生成將爲我創建數據庫的sql腳本。到目前爲止,我試過這個:實體框架遷移 - 生成當前數據庫模型的sql腳本

Update-Database -Script -SourceMigration: $InitialDatabase 
Update-Database -Script -SourceMigration:0 

但這兩個都給我腳本,從第一次遷移到最後一個。數據庫沒有初始狀態,其中應包括數據庫本身的創建,以及當我將遷移添加到項目時存在的單個表。

那麼現在如何在遷移不給我完整的sql腳本時重新創建我的模型呢?

+0

據我所知,應該始終有一個初始狀態。幾個問題;是否有可能通過錯誤刪除了遷移文件?如果不是,那麼遷移實用程序在不使用-script的情況下更新數據庫時會給您什麼錯誤?數據庫的創建通常不會出現在遷移中,因爲名稱取決於連接字符串,儘管遷移實用程序通常會根據需要使用該信息創建數據庫。你的腳本包含什麼?除了你提到的第一張表以外的所有東 – tne

回答

43

嘗試:

Update-Database -Script -SourceMigration: $InitialDatabase -TargetMigration: [MigrationName] 

這應該包括從最初的數據庫,以有針對性的遷移腳本。至少應該有「MigrationHistory」表。

您也可以嘗試通過重新創建您的遷移:

1)恢復到初始數據庫。如果一切順利,這應該刪除數據庫中的所有表。

Update-Database -TargetMigration: $InitialDatabase 

2)刪除Migrations文件夾內的所有遷移文件。您不必刪除配置類文件。

3)添加新的遷移。但是,這會創建一個從初始數據庫到最新模型的遷移文件。

Add-Migration -Name: [MigrationName] 

希望這會有所幫助。我也建議看看this博客文章。注意提示#5,它是「從不刪除遷移之前刪除(向下)」。根據我的經驗,如果不遵守,這會導致遷移問題。