3

EF5.0 用の EF パワー ツールのベータ 3 を使用して、既存のデータベースをリバース エンジニアリングしています。

プロジェクトのコンテキスト メニューから [リバース エンジニア コードを最初に] を選択すると、すべてのモデルと DBContexts + マッピングが期待どおりに取得されます。そして、すべてがよさそうです。

リバース エンジニアリング プロセスが完了した直後に、移行を正常に有効にしました。

ただし、モデルの 1 つに新しいプロパティを追加したいと考えています。新しいプロパティを追加した後、

PM> Add-Migration AddMyPropertyToMyTable を実行します

移行ファイルが作成され、

その後、PM> Update-Database を試してみると

テーブルが既に存在するというエラーが表示されます。

ここのチュートリアルに従っています:> http://msdn.microsoft.com/en-us/data/jj200620

このエラーが発生するのはなぜですか? もちろん、テーブルは存在します。リバースエンジニアリングしただけです

リバース エンジニアリング後にデータベースを削除する必要がありますか? または、リバース エンジニアリングされた Db の場合、実際のデータベースに変更を加えて、プロジェクトで必要な変更を取得するために再度エンジニアリングを行う必要がありますか (つまり、そもそもリバース エンジニアリングのポイントは何ですか?)

モデルの変更後にデータベースを更新可能にするために必要な追加の手順など、チュートリアルに欠けているものはありますか?

4

1 に答える 1

8

__MigrationHistory既存のデータベースで移行を有効にした場合、EF はテーブルまたは初期移行 ( DbMigration) ファイルを追加しませんでした。

パッケージ マネージャー コンソールで次を使用して、初期移行を追加できます。

Add-Migration Initial -IgnoreChanges

これは空の初期移行になります。次に、EF に__MigrationHistoryテーブルを強制的に作成させるには、次を使用できます。

update-database

これにより、__MigrationHistoryテーブルが作成されます(システムテーブルの下)

これで、モデルを変更し、新しい移行ファイルを作成できるようになります (または、フォルダーConfiguration.csの下のファイルで構成して自動移行を使用できMigrationsます)。

を使用してこれらの移行の変更を手動で実行するupdate-databaseか、初期化子を使用して、アプリケーションの起動時にデータベースを最新の移行に自動的に移行することができMigrateDatabaseToLatestVersionます。

これを app.config/web.config で設定して、たとえば本番環境で設定しないようにすることができます。

于 2013-04-18T18:04:46.377 に答える