私が持っています:
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」を実行するだけで、「データの損失につながるため、自動移行は適用されませんでした」!
これが理解できません...列名を変更してデータベースを更新できないのはなぜですか?これはデータ損失の問題ではないはずですか?私は何か間違ったことをしていますか?
Upおよびdownメソッドを編集し、AddColumnおよびDropColumn命令をRenameColumnに置き換える必要があります。
EFは、列の名前を変更しているのか、列を削除して新しい列を作成したいのかを検出できません。
以下のコードは、移行を実行するために必要ではありません。
AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False
そして、この記事( from entityframework codeplex )によると、これはEFエラーであり、移行で-Force
属性を使用してこれを無視できます。
Update-Database -Force
または
Update-Database -TargetMigration: X -Force
それはあなたの問題を解決するはずです。
IMO、あなたはEFにあなたのカラムで何をするかを決めさせるべきです、私の意見です。
私はこのように解決しました、ただタイプしてください:
データベースの更新-強制
並列ブランチにあるデータベースに移行を適用したときにも、この問題が発生しました。現在のブランチには知識がなく、古い移行に戻そうとします。最善の解決策は、オーサリングブランチに切り替えて、2つのブランチ間の最新の一般的な移行に戻すことです。
私の問題は、それ自体が移行である別の小さな変更があったことです。更新しようとしています。 Update-Database -Name "peek"
で確認してください。