ホームページ >データベース >mysql チュートリアル >既存のデータベース オブジェクトが原因で、ASP.NET Core/Entity Framework Core で Update-Database コマンドが失敗するのはなぜですか?

既存のデータベース オブジェクトが原因で、ASP.NET Core/Entity Framework Core で Update-Database コマンドが失敗するのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-20 00:20:12412ブラウズ

Why Does My Update-Database Command Fail in ASP.NET Core/Entity Framework Core Due to Existing Database Objects?

既存のデータベース オブジェクトが原因で ASP.Net Core/Entity Framework コアでデータベース更新コマンドが失敗する

シナリオ:
Update-Database コマンドを使用してデータベースを更新しようとすると、次のことを示すエラーが発生します。オブジェクトがデータベースにすでに存在していることを示します。この問題は通常、データベース内のテーブルを手動で変更した後に発生します。

根本原因:
Update-Database コマンドは、移行に依存してデータベース スキーマを更新します。移行プロセス外でデータベースに手動で変更を加えると、コマンドの一貫性が失われ、失敗します。

エラー メッセージ:

System.Data.SqlClient.SqlException: There is already an object named 'ClientsAndTestimonials' in the database. ...

解決策:
この問題を解決し、Update-Database コマンドを成功させるには、次の手順に従ってください。手順:

  1. 手動変更の削除: データベース テーブルに加えられた手動変更をロールバックまたは削除します。
  2. 新しい移行を作成 : Visual Studio またはコマンド ウィンドウで、Add-Migration "Reset" コマンドを実行して、影響を受けるテーブルとその依存関係。
  3. 移行を適用: Update-Database コマンドを実行して新しい移行を適用し、現在のモデルと同期してデータベースを再作成します。

増分変更の代替アプローチ:
データベースに増分変更を加えた場合モデルを削除したくない場合は、次の手順を実行できます。

  1. 移行を無効にする: / を使用して、移行クラスの Up() メソッドの内容をコメント アウトします。 /.
  2. ベースライン移行を適用: Update-Database を実行して現在のデータベースのスナップショットを作成しますstate.
  3. 増分変更の復元: 増分モデルの変更を別の名前で新しい移行に再実装し、適用します。

以上が既存のデータベース オブジェクトが原因で、ASP.NET Core/Entity Framework Core で Update-Database コマンドが失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。