Nuget を介してプロジェクトに EF 5 を追加し、「Enable-Migrations」コマンドで移行を有効にしました。次に、"Add-Migration" を呼び出して、スキーマを生成するためのベース コードを生成しました。
次に、ドメイン オブジェクト ("TestProperty" と呼ばれる文字列プロパティ) の 1 つにプロパティを追加し、EntityTypeConfiguration ファイルにマッピングを追加しました (現時点では規則を無視しています)。
「Add-Migration」を再度呼び出すと、次のエラーが発生します。
Unable to generate an explicit migration because the following explicit migrations are pending: [201303262144218_Initial]. Apply the pending explicit migrations before attempting to generate a new explicit migration.
ただし、「Update-Database」を呼び出すと、テーブルが既に存在するため、SQL 例外が発生します。
There is already an object named 'Customer' in the database
私の DbContext のコンストラクターでは、さまざまな更新戦略を試しました。
Database.SetInitializer<UnitOfWork>(new DropCreateDatabaseAlways<UnitOfWork>());
明らかな何かが欠けていますか?ここで解決策を試しましたが、うまくいきませんでした: ASP.NET の自動移行
ありがとう
編集: 更新 最初のステップを通過するための鍵は、最初の移行を作成し、生成されたコードを Up メソッドと Down メソッドから削除することです ( http://thedatafarm.com/blog/data-access/using-ef-migrations- with-an-existing-database/ )。
次に、モデルと EF マップを更新して、Add-Migration を実行します。これにより、正しいアップ コードとダウン コードを含む移行が生成されます。
問題は、更新を適用しようとすることです。Update-Database は、「保留中の変更があり、自動移行が無効になっているため、現在のモデルに一致するようにデータベースを更新できません...自動移行です。自動移行を有効にするには、DbMigrationsConfiguration.AutomaticMigrationsEnabled を true に設定します。Add-Migration を使用できます。保留中のモデルの変更をコードベースの移行に書き込むコマンド」. わかりましたので、もう一度 Add-Migration を試してみると、最後の移行とまったく同じコードで別の移行が生成されます。
Update-Database を実行すると、同じエラーが再び発生します。「Update-Database -TargetMigration 201304080859556_MyMigration -Force」を試してみましたが、「指定されたターゲット移行 '201304080859556_MyMigration' が存在しません。ターゲット移行が既存の移行 ID を参照していることを確認してください」が生成されます。
非常にイライラします!