19

私は持っている:

AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False

私の構成ファイルと既存のモデルは次のとおりです。

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

3列目を「説明」から「am_description」に変更し、「update-database -verbose」を実行しただけで、「データが失われるため、自動移行は適用されませんでした」という結果になりました。

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

4

6 に答える 6

37

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

AutomaticMigrationsEnabled = True
AutomaticMigrationDataLossAllowed = False

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

Update-Database -Force

また

Update-Database -TargetMigration: X -Force

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

IMO、私の意見ですが、EFに列の処理を決定させる必要があります。

于 2013-09-19T15:57:25.393 に答える
19

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

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

于 2013-09-19T16:02:35.303 に答える
1

私はこのように解決しました。次のように入力してください:

更新データベース -強制

于 2013-12-02T04:14:16.543 に答える