Entity framework 实体框架迁移器';s连接

Entity framework 实体框架迁移器';s连接,entity-framework,ef-code-first,entity-framework-migrations,Entity Framework,Ef Code First,Entity Framework Migrations,使用EntityFramework5.0,我试图在MVC站点的启动例程中手动迁移代码优先数据库。为此,我首先创建一个DbContext实例,然后运行以下代码: var migrator = new MigrateDatabaseToLatestVersion<DataContext, Configuration>(); migrator.InitializeDatabase(this.dataContext); var database = this.dataContext.Dat

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

var migrator = new MigrateDatabaseToLatestVersion<DataContext, Configuration>();
migrator.InitializeDatabase(this.dataContext);
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();
var migrator=new MigrateDatabaseToLatestVersion();
migrator.InitializeDatabase(this.dataContext);
我假设与dataContext的连接关联的数据库就是迁移的数据库。看来情况并非如此。相反,它总是尝试迁移本地SQLExpress实例上的数据库


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

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

最后,我编写了以下代码:

var migrator = new MigrateDatabaseToLatestVersion<DataContext, Configuration>();
migrator.InitializeDatabase(this.dataContext);
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();