2017-03-26 4 views
0

私はEntity Framework 6.1.3のデータ移行を最初に使用しています。 移行のリセット中です。私は移行履歴テーブルを削除し、dbの現在の状態の新しいベースラインスナップショットを作成しました。すべてが新しい、次の初期化子を使ってインストールに正常に動作します:Entity Frameworkの移行を元に戻し、以前の移行からのスキーマを同期させよう

Database.SetInitializer(new MigrateDatabaseToLatestVersion<T>, Migrations.Configuration>(true)); 

しかし、どのように1は、既存のデータベースを持っているお客様に、このリセットを展開する必要がありますか?これは、エラーが発生した既存のデータベースがある場合、ローカルで失敗します。 データベースに「*****」という名前のオブジェクトが既に存在します。

マイグレーションをリセットして既存のデータベースのスキーマを同期する必要がある場合、誰かがより良いアプローチを持っていますか?

+1

いいえ、導入や変更の数によっては、ベースラインスクリプトを使用して、それぞれに存在するものをコメントアウトすることができます。列、キー、インデックスなどを比較する必要があるため、退屈な作業になる可能性があります。また、データベースオブジェクトが存在しない場合は作成して、存在チェックで各データベースオブジェクトを囲むこともできます。 –

答えて

0

チームの以前の開発者がAdd-Migrationsスクリプトを正しく使用していなかったため、マイグレーションをリセットする必要があると考えました。これは、次のエラーの原因となった。

enter image description here

しかし、私はそれは既存の顧客のために働くだろうかどうかはわかりませんでした。私はマイ・マイグレーションを再構築することができたことに気付きませんでした。多くのSOの検索と試行錯誤の末、私は移行を保存することができました。私は最初、良い状態にあった移行に移行しました。

enter image description here

指定した完全修飾名を使用することが重要でした。試行錯誤の後、私は安定した移行を見つけました。私は、次のことを実行することによって、これを検証:

enter image description here

をEFが完全に調整することができればそれは成功するでしょう。私はまた、VSプロジェクトから、最近ターゲットを絞った移行後のすべての移行を除外しなければなりませんでした。単純なシフト選択、プロジェクトから右クリックして除外します。

次に、データベースを更新した後、次の移行をプロジェクトに戻しました。私はまた、流暢なAPIを使用して、現在ターゲットとしている移行後のすべてのモデルの変更を除外しました。

enter image description here

それから私は、インクリメンタルすべて壊れたの移行再足場。

enter image description here

そして、一番最後に私は、この時点までの私のスキーマの冪等のスクリプトを作成しました。次の使用:

enter image description here

私の移行は今モデル不一致不満されていないと私は幸せです。

関連する問題