1

我正在運行使用代碼優先遷移的實體框架。我的新版本添加了一個表格,修改了一些表格,並運行了一些腳本。這在使用update-database進行本地開發時非常有效。部署到Azure未運行EF代碼優先遷移

部署時,新表未創建,我從客戶端收到錯誤。我將調試器連接到部署的站點,以跟蹤發生的事情。它到達了控制器,經歷了正常的流程,並且在第一次將數據庫調用到新的(但實際上還不存在的)表上時,它跳轉到配置類中進行遷移。

internal sealed class Configuration : DbMigrationsConfiguration<myProject.api.AuthContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = false; 
     MigrationsDirectory = @"Migrations\Auth"; 
     ContextKey = "myProject.api.AuthContext"; 
    } 

所以我覺得很好,一切都會好的。它經歷了所有這些,返回到初始數據庫調用,但那麼調用返回一個錯誤,下面粘貼

因爲 數據庫創建模型靠山「AuthContext」已經時過境遷。考慮使用Code First Migrations來更新 數據庫(http://go.microsoft.com/fwlink/?LinkId=238269)。

這是令人驚訝的,因爲實際上我已經啓用了代碼第一次遷移!使用標準的啓用遷移和添加遷移,當我發出update-database命令時,它在我的本地機器上完美地工作。

1)如何讓我的代碼優先遷移部署到Azure後運行?

更新1

這裏是我的發佈設置。出於某種原因,我沒有複選框選項:「執行代碼第一次遷移」,我猜這是問題... enter image description here

+0

哪個DatabaseInitializer您使用的?應該是這個樣子:Database.SetInitializer (新MigrateDatabaseToLatestVersion <配置>()) –

+0

'''公共配置(){ AutomaticMigrationsEnabled = FALSE; ... } ''' 告訴你不希望它自動運行遷移實體框架,只有當你明確使用包管理器控制檯命令'''更新,Database''' 我有相反的問題。我只是連接到Azure上的一個新數據庫,然後自動遷移,儘管*我的配置指定了AutomaticMigrationsEnabled = false;''' –

回答

3

Huzzah!我的更新是問題。我從其他SO帖子發現他有時會發生。清理並重建,然後重新啓動VS,恢復'Execute Code First Migrations'複選框。重新部署,一切正常。

+0

有同樣的問題,但上面沒有辦法。以下是。在global.asax中我有「數據庫」。SetInitializer(new xxxDbInitializer());「我註釋掉了這一行,重新編譯,註釋,重新生成,複選框運行代碼優先遷移,不幸的是出現了一個新問題,每個表中的列名必須是唯一的。 '表'xxx'中指定了多次,我會爲此打開一個新問題。 – BrilBroeder

1

你檢查了這些代碼行嗎?

在你的web.config:

<appSettings> 
    <add key="MigrateDatabaseToLatestVersion" value="true"/> 
</appSettings> 

在你的global.asax.cs/Startup.cs(OWIN啓動):

var configuration = new Migrations.Configuration(); 
var migrator = new DbMigrator(configuration); 
migrator.Update(); 
相關問題