[英]EF 6 programmatic Migration with custom connection string
我有一個啟用遷移的EF6代碼優先實現和一個初始遷移。 我創建了一種以編程方式運行遷移的方法,如下所示:
public void RunMigration()
{
var migrationConfiguration = new DataAccess.Migrations.Configuration();
var migrator = new System.Data.Entity.Migrations.DbMigrator(migrationConfiguration);
migrator.Update();
}
當我開始測試時,我在App.config中有幾個已配置的連接字符串。 我的問題:
如何告訴DbMigrator使用哪個連接字符串?
更新:我想在不擴展DbMigrator的情況下執行此操作。
我用
var migrator = new DbMigrator(new DbMigrationsConfiguration { TargetDatabase = new DbConnectionInfo("MyConnectionStringHere")});
migrator.Update();
因此,除非有人給出更好的答案:在EF6中,從EF 6.1.3開始,沒有工作方式可以為編程數據庫遷移指定運行時連接字符串。 我認為我唯一能看到的是,我將需要生成一個sql腳本並在數據庫設置時以編程方式運行它。 問題是我要么必須在文本中進行編譯,要么將其與二進制文件一起部署。
您可以設置dbConnectionInfo:
migrationConfiguration.TargetDatabase = new DbConnectionInfo(connectionString);
完整代碼:
public void RunMigration(string connectionString)
{
var migrationConfiguration = new DataAccess.Migrations.Configuration();
migrationConfiguration.TargetDatabase = new DbConnectionInfo(connectionString);
var migrator = new System.Data.Entity.Migrations.DbMigrator(migrationConfiguration);
migrator.Update();
}
Importan !:請確保您未在dbContext初始化程序中設置連接名稱。
看起來您會將migrationConfiguration.TargetDatabase
設置為DbConnectionInfo
。
DbConnectionInfo
的構造函數之一采用連接字符串。 參見MSDN
看來,實際使用此方法最簡單的方法是修改DataAccess.Migrations.Configuration
類以將構造函數與連接字符串一起使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.