質問: 非常に明白な何かが欠けているかもしれません。しかし、私はEFコアの既存のテーブル/モデルに新しい列を追加する方法を見つけることができませんでした。 これは私が次のドキュメントです: https : //docs.microsoft.com/en-us/ef/core/miscellaneous/cli/powershell これは私がこれまで行ってきたことです: 1. 次のコマンドを使用して移行を作成しました: "Add-Migration -Name CodingSoldierDbContextMigration -utputDir Migrations - CodingSoldierDbContext" 2. コマンド "Update-Database -Migration CodingSoldierDbContextMigration -Context CodingSoldierDbContext"を使用してデータベースを更新しました。データベースにテーブルが作成されました。 3. 今私は既存のテーブルに新しい列を追加する必要があります。その列を.csファイルのモデルに追加します。そして、私は既存の移行を削除します: "Remove-Migration -Force -Context CodingSoldierDbContext" 4. 今度は手順1と2でコマンドを再実行します。Add-Migration worksとMigrationが作成されます。しかし、Update-Databaseはエラーで失敗します。「データベースにAspNetRolesという名前のオブジェクトが既に存在します。」これはテーブルが既にデータベースに存在していることを意味します。 だから私はすでに既存のテーブルテーブルを更新するのですか?私が考えることができる2つの方法は次のとおりです: 1. データベースを削除します。移行およびデータベースの更新を作成します。しかし、すべてのデータはなくなります。 2. モデルに列を追加します。 SQLスクリプトを使用してテーブルを手動で更新し、新しい列を追加します。 しかし、私はこれを行うためのよりよい方法があるべきだと感じています。
回答: これが問題の解決方法です。完璧な方法であるかどうかは分かりません。 キーは、新しい移行を作成する前に、最初の移行を削除しないことです。 ここに手順を追加する: 1. 初期移行の作成:「移行の追加 - 名前CodingSoldierDbContextMigration - 出力ディレクトリの移行 - コンテキストCodingSoldierDbContext」 2. コマンド "Update-Database -Migration CodingSoldierDbContextMigration -Context CodingSoldierDbContext"を使用してデータベースを更新しました。テーブルはデータベースで作成されます。 3. モデルの1つに新しいフィールドを追加しました。 4. 更新された移行の作成:「移行の追加 - 名前CodingSoldierDbContextMigrationUpdated - 移行ディレクトリの移行 - コンテキストCodingSoldierDbContext」この移行には、既存のテーブルを更新するためのコードしかありません。 5. 更新された移行を使用してDBを更新する:「データベースの更新 - 移行CodingSoldierDbContextMigrationUpdated」理想的には、これはそれを解決したはずです。しかし、私にとっては、(Verboseログのように)最初の移行で更新しようとしていたため、エラーが発生しました。「CodingSoldierDbContextMigration」、理由はわかりません。 6. だから私はスクリプト - マイグレーションを使用してスクリプトを生成します: "スクリプト - マイグレーション - CodingSoldierDbContextMigrationから - 強力な - 出力C:\ MigrationScript.sql - コンテキストCodingSoldierDbContext"。これは、更新された移行からの変更のみを持つスクリプトを生成しました。 DBでそのスクリプトを実行すると、列が作成され、 "__EFMigrationsHistory"テーブルに移行エントリが追加されました。