2

Entity Framework 5.0を使用して、MVCサイトの起動ルーチン中にコードファーストデータベースを手動で移行しようとしています。これを行うには、最初にDbContextインスタンスを作成してから、次のコードを実行します。

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

dataContextの接続に関連付けられているデータベースが移行されたものであると想定しました。そうではないようですが。代わりに、常にローカルSQLExpressインスタンス上のデータベースを移行しようとします。

DB接続文字列名を取得するMigrateDatabaseToLatestVersionコンストラクターにオーバーロードがありますが、私のプロジェクトは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 に答える