1

何をしたかわかりませんが、azureに公開すると次のエラーが発生します。

Automatic migration was not applied because it would result in data loss.

今、これは非常に気が遠くなる。私のモデルは私のデータベースと100%一致しています-それで、強制するとデータが失われる可能性はありますか?私は今何をすべきか本当に混乱しています。

自動移行についてはこれだけです:S自動化はあまりありません:)私のエラーは、新しいモデルを作成して公開し、EFがそれらの新しいテーブルを作成したことだと思います。次に、モデルをに追加するのを忘れたことを思い出しましたDbContext。そこで、新しいものをコンテキストに追加してDbSets公開しました。それはおそらくそれがうまくいかなかったところです。しかし、繰り返しになりますが、モデルがPOCOクラスでない場合、またはモデルが呼び出される場合に、EFがデータベースにモデルを追加したことを知りませんでした。トリガーされたいくつかの外部キーである可能性があります。とにかく、私は自分のコードで熱狂を元に戻し、新しく作成されたすべてのテーブルなどを削除して、出発点にたどり着きました。私はそれがそれを解決するかもしれないと思いました。しかし、noooeeは私をばかげた。

この問題をどこから始めればよいか考えてみてください。私は崖から飛び降りるつもりです私は私のデータを失います:)

4

2 に答える 2

2

EFにSQLを作成させることができるため、移行を手動で実装できます。パッケージマネージャーコンソールで、次のように入力します。

update-database -v -f -script

それはあなたが見渡すことができるSQLで新しいウィンドウを開き、そしてあなた自身をデータベースに直接適用します。移行履歴にエントリを入力する最後の行により、DbContextは正しいバージョンを参照していることを知ることができます。

于 2013-02-27T18:13:14.780 に答える
1

まずバックアップを作成してください!SQL Compactを使用している場合は、特に簡単です。ファイルをコピーするだけです。または、LocalDBまたはSQL Serverを使用して、ファイルをデタッチ、コピー、アタッチします。

しかし、もう少し助けを与えるために、そのスクリプトを生成することで、データ損失の原因となる可能性のあるものを探す必要があるかもしれません。テーブルの主キーになる新しい列を追加すると、元の列が保持されていてもデータが失われる可能性があります。これは、新しい列にNOT NULL制約が適用され、(すべての)行が削除されるためです。

于 2013-06-22T01:58:50.460 に答える