16

プロパティの名前を変更した場合、Visual Studio IDEはスマートなので、リファクタリングしてコード全体でそのプロパティの名前を変更することができます。その名前の変更は、EFの移行に使用されるモデルであり、そしてあなたのような標準の自動移行を実行した場合:あなたが何を望むかEFの移行:自動移行のRenameColumn?

AddColumn("NewName"... 
DropColumn("OldName"... 

ない:

update-database -f 

をあなたはこれを取得します。明らかにこの時点でAdd-Migrationを実行すると、RenameColumnへの1回の呼び出しでこれらの2つの呼び出しを手動で変更できますが、自動移行でこれを自動的に実行する方法はありますか?おそらく、私が正しくやっていないプロパティの名前変更へのアプローチは?

私はVS2012でEF 5.0を使用していますが、この動作はEF 4.3.1とVS2010にも表示されます。

答えて

23

移行では、プロパティと列の名前が自動的に検出されません。スキャフォールドされた移行には、名前の変更に変更する必要があるドロップ/作成が含まれます。

([Column]注釈をプロパティに追加するだけで)列の名前を変更するだけでは、列がマップされているプロパティの名前を照合できるため、名前を変更することができます。

Add-Migrationコマンドに-Renamesスイッチを追加することを検討しましたが、最終的にはコマンドラインで名前を変更するよりも簡単に生成されたコードを編集することができました。

〜ローワン

+1

最新のEF(2014年12月8日現在)でこれを実行しました。名前が変更されました。これの仕組みがわからない - Rowan、あなたはまったく助言してもらえますか? (最初にコード、注釈がなく、流暢でない - 一部のクラスのプロパティの名前が変更された) –

5

私の意見:EFはあなたが既存の列の名前を変更したことを知らない。リファクタリングは変更に関する永続的な情報を持たずに設計時間を変更するので、マイグレーションを実行すると、EFは名前の変更と新しい列の実際の削除/追加の違いをわかりません。

+0

の移行はすでに多くの他の方法でIDEを活用するので、しかしIDEからの移行には、この情報を保持するために非常に有用であろう。 –