現在、私は EF6 Alpha を使用しています。移行を使用すると、新しい移行ログが __MigrationHistory テーブルに追加されます。
EF6 では、__MigrationHistory テーブルに "ContextKey" という新しい列があります。テストの結果、デフォルトの「ContextKey」値が 2 つあることがわかりました。
DbContext の派生クラスの完全な名前。これは、コードを実行すると発生します。
Database.CreateIfNotExists();
DbMigrationsConfiguration の派生クラスの完全な名前。これは、コードを実行すると発生します:
public ArticleDbContext() { Database.SetInitializer(new MigrateDatabaseToLatestVersion<ArticleDbContext, ArticleConfiguration>()); }
初めてアプリケーションを実行すると、「Database.CreateIfNotExists();」私のために新しいデータベースを作成し、ArticleDbContext で定義されたモデルにマップするすべてのテーブルも作成し、ContextKey の値が「Module.Article.Model.ArticleDbContext」である __MigrationHistory 行を追加します。
そして、「Database.SetInitializer(new MigrateDatabaseToLatestVersion());」このコードが実行されると、新しい ContextKey "PowerEasy.Module.Article.Migrations.ArticleConfiguration" が生成されます。移行は、この ContextKey を使用して __MigrationHistory テーブルをクエリし、データがないことを確認します。したがって、ArticleDbContext で定義されたモデルにマップされるすべてのテーブルが作成されますが、テーブルはデータベースに既に存在するため、例外がスローされ、「テーブル XXX は既に存在しています」と通知されます。
どうすればこれを解決できますか?