2017-06-20 14 views
0

私はEntity Framework 6 Code-Firstを使用しています。私のアプリケーションは本番環境にあります。私はモデルでデータを失うことなくいくつかの変更を行う必要があります。 一対多から、Entity Framework 6 Code-Firstで本番環境でデータを失うことなくモデルを変更する方法?

  • 変更の2つのエンティティの関係多対多:

    は、私はこれらのような変更を実行する必要があります。

  • エンティティプロパティのデータ型を変更します。

シードデータベースのようなものが必要ですが、モデルを変更して後で再度挿入する必要があります。データを移動する必要があります。私が関係を変えると、私はデータを失うことはありませんが、関係はありません。

どうすればこの処理を行うことができますか?

ありがとうございました。私は、次の手順を実行することをお勧め

+0

新しい古いモデルからEFの移行を作成し、あなたのDBにそれを適用しようとすることができます。あなたの最初の変更はうまく移行されますが、2番目の変更が正常に移行するかどうかはわかりません。生成された移行のコードを確認するか、一時的なデータベースに移行を適用できます。 –

+0

シードデータベースで古いモデルをクエリしていますか? – gezanoletti

+0

EF移行は、古いモデルから新しいモデルにデータを移行します。つまり、EFは新しい移行の変更を使用してデータを「更新」しようとします。この代わりに、Seedは定義された戦略でデータを初期化するだけです。したがって、古いモデルのデータで現在のモデルを初期化できる戦略がわかりません –

答えて

1

  1. は、影響を受ける表のデータ&関係を表す一時テーブルを作成します。あなたがUpdate-Databaseを実行しているCREATE TABLE SQL、BEFORE
  2. を使用して、EFのこの外側を行うことを確認し、データとの関係を挿入するために
  3. あなたの一時テーブルに実行Update-Database
  4. 実行スクリプトを問題のテーブルからデータを移動するためのスクリプトを実行します戻ってあなたの新しいテーブルへ
  5. ドロップ一時テーブル
+0

あなたの答えをありがとう。わたしにはできる。私はEFがこれらのケースをサポートし、C#のすべてを行うべきだと思います。最後に、プロジェクトの移行の一部として残っています。 – gezanoletti

関連する問題