使用自定义连接字符串

时间:2015-12-16 16:49:11

标签: c# .net entity-framework entity-framework-6 .net-4.5

我有一个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就可以做到这一点。

4 个答案:

答案 0 :(得分:3)

我用

var migrator = new DbMigrator(new DbMigrationsConfiguration { TargetDatabase = new DbConnectionInfo("MyConnectionStringHere")});
migrator.Update();

答案 1 :(得分:2)

因此,除非有人提出更好的答案:在EF6中,EF 6.1.3没有工作方式来为程序化数据库迁移指定运行时连接字符串。我认为我唯一能看到的是,我需要生成一个sql脚本,并在数据库设置时以编程方式运行它。这个问题是我要么必须在文本中编译,要么用二进制文件进行部署。

答案 2 :(得分:1)

您可以设置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初始化程序中设置连接名称。

答案 3 :(得分:0)

您似乎将migrationConfiguration.TargetDatabase设置为DbConnectionInfo

DbConnectionInfo的一个构造函数接受一个连接字符串。 见MSDN

看起来实际使用它的最简单方法是修改DataAccess.Migrations.Configuration类以使用带有连接字符串的构造函数。