带有自定义连接字符串的EF 6编程迁移
本文关键字:EF 编程 迁移 字符串 自定义 连接 | 更新日期: 2023-09-27 18:27:00
我有一个EF6代码优先的实现,启用了迁移和一个初始迁移。我创建了一个以编程方式运行迁移的方法,如下所示:
public void RunMigration()
{
var migrationConfiguration = new DataAccess.Migrations.Configuration();
var migrator = new System.Data.Entity.Migrations.DbMigrator(migrationConfiguration);
migrator.Update();
}
当我开始测试时,我在App.config中有几个配置的连接字符串。我的问题:
如何告诉DbMigrator要使用什么连接字符串
更新:我想catch是在不扩展DbMigrator的情况下执行此操作的。
I使用
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();
}
重要!:不要在dbContext初始值设定项中设置连接名称
看起来您应该将migrationConfiguration.TargetDatabase
设置为DbConnectionInfo
。
DbConnectionInfo
的一个构造函数采用一个连接字符串。请参阅MSDN
看起来实际使用它的最简单方法是修改DataAccess.Migrations.Configuration
类,使其使用带有连接字符串的构造函数。