まず、これらの質問/回答を読みました。
- EF 移行メッセージ
- コードベースの移行を使用しているときに、データベースに保留中の移行がないことを確認する Add-Migration を停止するにはどうすればよいですか?
- EF4.3 Code First Migrations で保留中の移行を無視する
これらはすべて EF5 より前の EF バージョン用のようであり、私の状況はこれらの回答に合わないようです。それでは、私の状況を説明させてください。
- 私のアプリケーションは、最初にモデルを使用して EF4 を使用して作成されました。GUI デザイナーを使用してデータベースを設計し、それを使用してデータベースを生成しました。
- 数か月間、データベースを実行してデータを収集してきました。私は本当にこのデータを失うことはできません。
- コードを分岐し、NuGet を使用して EF5 をインストールし、EF Power Tools を使用してデータベースからモデルを生成しました。新しいクラス ライブラリ プロジェクトを右クリックし、
Entity Framework | Reverse engineer code first
. - 新しいプロジェクトをスムーズに再参照し、ObjectContext ではなく新しい DbContext を使用するようにプロジェクトを変換し、古いモデルを保持していた EF4 クラス ライブラリを削除することができました。プログラムはうまく機能します!
ここで、Ruby on Rails で少し経験した自動移行を試してみたいと思います。これが私がしたことです:
- ラン
Enable-Migrations
。接続文字列と app.config が使用されていたため、少し問題がありましたが、最終的には取得しました。ただし、この MSDN ページには、これにより、最初の移行が自動的に生成され、私がすでに到達しているポイントに到達するはずであることが示されています。そうではありませんでした。 - ステップ
Add-Migration InitialSchema
1で自動的に行われなかったことを達成するために実行しました。これは機能しました。 - モデル オブジェクトの 1 つにプロパティを追加し、実行しようとしたところ、次のよう
Add-Migration AddSerialToLogEntries
に表示されました。
次の明示的な移行が保留中のため、明示的な移行を生成できません: [201307190100268_InitialSchema]。新しい明示的な移行を生成する前に、保留中の明示的な移行を適用してください。
既存のデータベースに移行を適用しようとして失敗しましたが、これは当然のことです。
上記の他の回答は、基本的に私は運が悪いと言っていましたが、私が言ったように、それらはEntity Frameworkの古いバージョン用でした。ここにオプションはありますか?
この質問を書いているときに、SQL Server Management Studio を使用してデータを SQL スクリプトにエクスポートし、データベース全体を削除し、EF に作成させてから、スクリプトを実行してデータを元に戻すことができるのではないかと考えました...明日時間があれば試してみますが、それがうまくいくかどうか100%確信が持てず、プロセスに挿入されたデータにエラーが発生するのを嫌うので、他のオプションがあるかどうかを知りたいです.