web-dev-qa-db-ja.com

EF 5.「データが失われるため、自動移行は適用されませんでした」-列名のみを変更しました

私が持っています:

AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False

私の設定ファイルと既存のモデルでは:

Public Property ID() As Integer
Public Property ERP_ArticleCode() As String
Public Property description() As String

私がしたことは、3番目の列を「description」から「am_description」に変更して「update-database -verbose」を実行するだけで、「データの損失につながるため、自動移行は適用されませんでした」!

これが理解できません...列名を変更してデータベースを更新できないのはなぜですか?これはデータ損失の問題ではないはずですか?私は何か間違ったことをしていますか?

19
TheMook

Upおよびdownメソッドを編集し、AddColumnおよびDropColumn命令をRenameColumnに置き換える必要があります。

EFは、列の名前を変更しているのか、列を削除して新しい列を作成したいのかを検出できません。

19
Swell

以下のコードは、移行を実行するために必要ではありません。

AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False

そして、この記事( from entityframework codeplex )によると、これはEFエラーであり、移行で-Force属性を使用してこれを無視できます。

Update-Database -Force

または

Update-Database -TargetMigration: X -Force

それはあなたの問題を解決するはずです。

IMO、あなたはEFにあなたのカラムで何をするかを決めさせるべきです、私の意見です。

私はこのように解決しました、ただタイプしてください:

データベースの更新-強制

1
mejiamanuel57

並列ブランチにあるデータベースに移行を適用したときにも、この問題が発生しました。現在のブランチには知識がなく、古い移行に戻そうとします。最善の解決策は、オーサリングブランチに切り替えて、2つのブランチ間の最新の一般的な移行に戻すことです。

0
Bob Provencher

私の問題は、それ自体が移行である別の小さな変更があったことです。更新しようとしています。 Update-Database -Name "peek"で確認してください。

0
gneric