我正在運行使用代碼優先遷移的實體框架。我的新版本添加了一個表格,修改了一些表格,並運行了一些腳本。這在使用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
這裏是我的發佈設置。出於某種原因,我沒有複選框選項:「執行代碼第一次遷移」,我猜這是問題...
哪個DatabaseInitializer您使用的?應該是這個樣子:Database.SetInitializer(新MigrateDatabaseToLatestVersion <配置>()) –
'''公共配置(){ AutomaticMigrationsEnabled = FALSE; ... } ''' 告訴你不希望它自動運行遷移實體框架,只有當你明確使用包管理器控制檯命令'''更新,Database''' 我有相反的問題。我只是連接到Azure上的一個新數據庫,然後自動遷移,儘管*我的配置指定了AutomaticMigrationsEnabled = false;''' –