2

使用 Entity Framework 5.0,我试图在 MVC 站点的启动例程期间手动迁移我的代码优先数据库。为此,我首先创建一个 DbContext 实例,然后运行以下代码:

var migrator = new MigrateDatabaseToLatestVersion<DataContext, Configuration>();
migrator.InitializeDatabase(this.dataContext);

我假设与 dataContext 的连接关联的数据库将是迁移的数据库。但似乎情况并非如此。相反,它总是尝试迁移本地 SQLExpress 实例上的数据库。

MigrateDatabaseToLatestVersion 构造函数有一个重载,它采用 DB 连接字符串名称,但我的项目使用的是 Azure,并且不使用标准的 ConnectionStrings 配置部分。理想情况下,我只需向它传递一个可用的连接字符串。这可能吗?

4

1 回答 1

8

解决方案是完全绕过 MigrateDatabaseToLatestVersion 类。它只是 DbMigration 类的一个薄包装器,如源代码所示

最后,我写了以下代码:

var database = this.dataContext.Database;
var migrationConfiguration = new Configuration();
migrationConfiguration.TargetDatabase = new DbConnectionInfo(database.Connection.ConnectionString, "System.Data.SqlClient");
var migrator = new DbMigrator(migrationConfiguration);
migrator.Update();
于 2012-09-13T19:12:02.583 回答