最新のバージョンへの移行戦略を使用する必要があります。このapporachは自動的にモデルが変更されたデータベースを更新することができます:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<MyDbContext, MyMagicDatabaseConfiguration>()`);
public class MyMagicDatabaseConfiguration : DbMigrationsConfiguration<MyDbContext>
{
public MyMagicDatabaseConfiguration()
{
this.AutomaticMigrationsEnabled = true;
this.AutomaticMigrationDataLossAllowed = true;
}
}
// !!Force the initialization. this will execute the update!!
MyDb.Context.Database.Initialize(true);
あなたはすべてを行う必要がありますが、MySQLを使用している問題MS SQL Serverのに
を使用している場合、これが正常に動作しますあなたの自己によって!:
var migrator = new DbMigrator(new DbMigrationsConfiguration ());
migrator.Update();
// In the migrtaions directory:
public partial class MyMigration : DbMigration
{
public override void Up()
{
AddColumn("dbo.MyTable", "AnyName", c => c.Boolean(nullable: false));
}
public override void Down()
{
DropColumn("dbo.MyTable", "AnyName");
}
}
これは簡単な作業ではありません。私はそれをすることをお勧めしません。ちょうどSQL Serverのapporachこれはあなたの時間を安全に使用してください。 ワンノート詳細:変更を自動的に処理できない場合、魔法の移行が機能しないことがあります(複雑なキー変更)。
また、対象バージョンへの移行を使用することができますあなたの場合は
var configuration = new DbMigrationsConfiguration();
var migrator = new DbMigrator(configuration);
migrator.Update("HereMigrationId");
var scriptor = new MigratorScriptingDecorator(migrator);
var migrationScript = scriptor.ScriptUpdate(sourceMigration: null, targetMigration: "HereMigrationId");
バージョンをターゲットにするの移行を必要としています。デシレータに を追加すると、移行中に移行スクリプトを変更できます。
私たちはMSSQLを使用しています。私たちは同じイニシャライザ設定を持っていますが、これはまさに問題です。 2つのバージョンのアプリが同じ設定を使って同じデータベースを使用している場合、構造の変更は継続されます。私たちはそれを使うことができますが、古いバージョンを使用している古いバージョンに、データベースの変更を開始する前に強制的に更新する方法が必要です。問題は、変更を開始せずにどのバージョンのDBが古いかを知る方法が見つからないということです。 – SebOlens
私は答えを更新しました。これが問題をスローするのに役立ちます。 donotは投票するのを忘れて^^ –
まだ同じです...もしアプリケーションの1つのインスタンス(バージョン1.0と言う)が最新の移行 "a"と2番目のインスタンス(新しく更新されたバージョン2.0としましょう)に "b"両者は同じ時間に同じデータベース上で動作し、どちらも移行に変更しようとします。私は正しい? データベース内の最新の移行を確認する方法はありますか?また、アプリのスキームが構造に一致しない場合は、アプリの最新のアップデートをダウンロードするよう強制されますか? – SebOlens