2013-09-16 19 views
5

今日まではEntity framework 6.0.0-alpha3を正常に実行していました。今日私はEntity framework 6.0.0-rc1に更新することを決めました。指定した通りhereでマイグレーションを実行するには、以前のマイグレーションをすべて削除してからef alpha1-alpha3を削除してリメイクする必要があります。エンティティフレームワークの移行で変更が検出されない

すべてのマイグレーションはalpha3で行われていたため、すべてのマイグレーション(_MigrationHistoryテーブルを含む)を削除して再度有効にすることにしました。

私はadd-migration Initial -IgnoreChangesとの最初の移行を作成した(空Up()Down()メソッドを持っていた)、その後、私はupdate-databaseを実行し、私はすべてが大丈夫であること、思いました。まあ、そうではありません。私のモデルに新しいクラスを追加するときに、add-migration firstは、空のUp()Down()の方法でマイグレーションを作成します。

以前は、移行にまだ登録されていないオブジェクトにアクセスするときに、移行を更新する必要があるというエラーが表示されました。今、新しいオブジェクトにアクセスしようとすると、単純に"Invalid object name 'dbo.Notifications'."と表示されます。

今私は何をしますか?

答えて

6

EFは、データベースモデルの現在のバージョンと最後の移行の間の変更を判断するために、移行とともに保存されるデータベースモデルのスナップショットを使用します。

add-migration Initial -IgnoreChangesコマンドは、データベースモデルのスナップショットを使用して移行を作成しますが、以前のデータベーススナップショット(空のデータベース)の変更は無視されます。

コマンドは、以前のマイグレーション(つまり初期)を調べ、現在のデータベースモデルのスナップショットとスナップショットフォームのInitialのマイグレーションを比較します。明らかにこれらのスナップショットは同じですので、Up()Down()メソッドは空です。

私はあなたの問題の解決策は、私は実体が、私は完全に新しいエンティティクラスを追加した場合でも、私の変化を認識していなかった問題が発生した最初の移行におけるすべての変更

add-migration Initial

1

を生成することだと思いますアセンブリにはまだ見えません。

すべてが正常だったことを覚えていて、移行後にすべての移行ファイルを削除して、再度移行を実行したときに移行に戻りました。ついに、すべての組み合わせの変化が現れました。

+0

ちょうどこの問題に遭遇しましたが、今回は問題が発生しましたが、今回は唯一解決策が「バッチビルド」(リビルドあり)です。私は信じているデバッグメニューの下にあります。これは私にとってはうまくいかなかったので、Rebuildと同じではないことに注意してください。 – parliament

0

また、空のアップ/ダウンが発生していました。原因は、Jsonデータソースにも同じモデルを使用していたため、EFは自分のモデルのプロパティ上に[JsonProperty]がありませんでした。

+0

本当ですか?この属性にいかなる干渉も見られませんでした。アトリビュートが問題を引き起こす時期については、詳細を示してください。 –

関連する問題