私は、データベースからのコードを最初に使用して、Entity FrameworkでASP.NET MVCプロジェクトに取り組んでいます。データベース内の各テーブルのモデルを取得します。モデルにいくつかの変更を加え、移行を有効にし、移行を初期化するとエラーが発生しました。
データベースには「TableName」という名前のオブジェクトが既に存在します。」
update-database -force
で試しましたが、助けにはなりませんでした。最初の移行では、すでに存在するテーブルが作成されます!
最初の移行でモデルに変更を適用し、最初からテーブルを作成しない方法
この場合、データベースとモデルの間で変更を同期するためのベストプラクティスは何ですか?
実行してみてください
Add-Migration InitialCreate –IgnoreChanges
パッケージマネージャーコンソールのコマンド。これにより、現在のモデルをスナップショットとして空の移行が作成されます。そして、実行
Update-Database
パッケージマネージャーコンソールのコマンド。これにより、InitialCreate移行がデータベースに適用されます。実際の移行には変更が含まれていないため、この移行が既に適用されたことを示す行を__MigrationsHistoryテーブルに追加するだけです。
this を参照してください
次に、モデルを変更し、移行を追加します。
別のアプローチは、upメソッドとdownメソッドのすべてのコードを単にコメントすることです
私にとっては、初期移行ファイルのUPおよびDown関数のすべてのコードをコメント化してからdotnet ef database update
これは正常に動作するはずです。初期移行をコメントアウトする前に、移行を更新してください。
このエラーは、以前の移行を削除し、新しい移行が既に存在する新しいテーブルを作成しようとしたときに表示されます。以前の移行を回復すると、すべてが正常になります。
Amr Alaaソリューションは機能しますが、データベースは最新モデルに移行しませんでした。
以下がその仕組みです(自動移行を使用):
新しく作成されたConfiguration.csでこの2つのプロパティをtrueに設定します
public Configuration()
{
AutomaticMigrationsEnabled = true;
AutomaticMigrationDataLossAllowed = true;
}
Update-Databaseを実行-Force
データベースが最新のスキームに更新され、準備が整います。
お役に立てれば。