簡體   English   中英

帶有自定義連接字符串的EF 6編程遷移

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM