2012-09-12 233 views
1

使用實體框架5.0,我試圖在我的MVC站點的啓動例程中手動遷移我的代碼優先數據庫。要做到這一點,我第一次創建的DbContext實例,然後運行下面的代碼:實體框架遷移器的連接

var migrator = new MigrateDatabaseToLatestVersion<DataContext, Configuration>(); 
migrator.InitializeDatabase(this.dataContext); 

我以爲用的DataContext的連接關聯的數據庫將是一個遷移。但似乎並非如此。相反,它總是嘗試在本地SQLExpress實例上遷移數據庫。

MigrateDatabaseToLatestVersion構造函數有一個重載過程,它需要一個數據庫連接字符串名稱,但我的項目使用的是Azure,並沒有使用標準的ConnectionStrings配置節。理想情況下,我只是將它傳遞給我可用的連接字符串。這可能嗎?

回答

7

解決方案是完全繞過MigrateDatabaseToLatestVersion類。它只是DbMigration類的一個小包裝,如shown in the source code

最後,我寫了下面的代碼:

var database = this.dataContext.Database; 
var migrationConfiguration = new Configuration(); 
migrationConfiguration.TargetDatabase = new DbConnectionInfo(database.Connection.ConnectionString, "System.Data.SqlClient"); 
var migrator = new DbMigrator(migrationConfiguration); 
migrator.Update();