私は2つのWebAppを持っています。 両方とも同じデータベースを参照し、両方のアプリケーションの移行を整理する必要があります。 両方のアプリケーションをMigrateDatabaseToLatestVersionに設定します。 空のデータベースアプリケーションを使い始めると、最初にスキームが作成され、テーブル__MigrationHistoryにはこれに関するレコードが作成され、すべてがOKです。 しかし、2番目のアプリケーションを起動するときに既存のデータベーステーブルを変更する必要がありますが、アプリケーションがクラッシュしてエラーが発生しました - "...このテーブルは既に存在しています" この問題を解決するには?MigrateDatabaseToLatestVersionを使用して2つのWebAppから移行
仕事に行くのではないのコード二アプリの例
Global.asaxの
Database.SetInitializer(new SyncContextInitializer());
using (var context = new SyncDataContext())
{
context.Database.Initialize(force: true);
}
public class SyncContextInitializer : MigrateDatabaseToLatestVersion<SyncDataContext, SyncConfiguration>
{ }
public class SyncDataContext : DataContext
{
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new IdentityUserLoginMap());
.......
base.OnModelCreating(modelBuilder);
}
}
public sealed class SyncConfiguration : DbMigrationsConfiguration<SyncDataContext>
{
private readonly bool _pendingMigrations;
public SyncConfiguration()
{
AutomaticMigrationDataLossAllowed = true;
AutomaticMigrationsEnabled = true;
var migrator = new DbMigrator(this);
_pendingMigrations = migrator.GetDatabaseMigrations().Any();
}
......
.....
}
データベースを削除して作成する必要がありますか? – Sampath
いいえ、私はちょうど既に存在するテーブルのためのいくつかのフィールドを更新し、いくつかの新しいテーブルを作成する必要があります。 ModelBuilderに追加された更新クラスと新しいエンティティ – 3axap
は、 'モデル変更の場合、データベースを削除して作成する '設定です。 – Sampath