我有一个启用了迁移的EF6代码优先实现和一个单一的初始迁移。我创建了一个方法来以编程方式运行迁移,如下所示:
public void RunMigration()
{
var migrationConfiguration = new DataAccess.Migrations.Configuration();
var migrator = new System.Data.Entity.Migrations.DbMigrator(migrationConfiguration);
migrator.Update();
}
字符串
当我开始测试时,我在App.exe中配置了几个连接字符串。我的问题:
如何告诉DbMigrator使用什么连接字符串?
update:我想catch是在不扩展DbMigrator的情况下完成的。
5条答案
按热度按时间xzabzqsa1#
我用
字符串
1tuwyuhd2#
因此,除非有人能给出更好的答案:在EF6中,从EF 6.1.3开始就没有工作方法来为编程数据库迁移指定运行时连接字符串。我想我唯一能看到的是,我需要生成一个sql脚本,并在数据库设置时以编程方式运行它。这方面的问题是,我要么必须在文本中编译,要么必须用二进制文件部署它。
8qgya5xd3#
看起来你会把
migrationConfiguration.TargetDatabase
设置为DbConnectionInfo
。DbConnectionInfo
的构造函数之一接受连接字符串。看起来实际使用它的最简单方法是修改
DataAccess.Migrations.Configuration
类,使其使用带有连接字符串的构造函数。z3yyvxxp4#
可以设置dbConnectionInfo:
字符串
完整代码:
型
Importan!:说明你没有在dbContext初始化器中设置连接名。
n3schb8v5#
我最近需要这样做,我的解决方案是创建一个自定义的Configuration类。完整的代码库对我来说非常好。
字符串
}
这提供了使用DataContext中指定的连接字符串的默认值以及传递连接的选项。
默认呼叫
型
使用传递连接信息的路由器
型
其中连接字符串是您的特定连接字符串,提供数据提供程序,例如System.Data.SqlClient