0

私はEFを初めて使用します。すでに適用されている移行の削除/削除に関する質問です。

適用された移行を削除するとデータベースが同期されなくなるといつも思っていましたが、データベースも自動的に変更されることがわかりました。以下は私のコードです:

まず、Product クラスがあります。

public class Product
{
   public string Name { get; set; }
   public string Category { get; set; }
}

次に、最初の移行を作成して更新しました

dotnet ef migrations add 初期

dotnet ef データベースの更新

次に、新しいプロパティを Product クラスに追加し、InStockコマンドを発行しました

dotnet ef 移行は AddInStock を追加します

dotnet ef データベースの更新

次に、この適用された移行を削除しようとしました

dotnet ef migrations remove --force

CLI ウィンドウにログ メッセージが表示Alter Table[Product] Drop Column [InStock]され、「InStock」列が削除されたことを意味する が表示されました。

その場合、「適用された移行を削除すると、データベースで非同期の問題が発生する」といつも聞いていたのはなぜですか? 私の場合、データベースは適用された移行の削除で更新され、常にプロジェクトと同期しています。

別の質問は、上記のコードは教科書からのものであり、私はそれに従って学習します。教科書には、強制削除を発行すると、次のログメッセージが表示されると書かれています。

Removing migration '<timestamp>_AddInStock' without checking the database. If this
migration has been applied to the database, you will need to manually reverse the changes
it made.
Removing migration '<timestamp>_AddInStock'.
Reverting model snapshot.

しかし、問題が発生したときにこのメッセージが表示されなかったのはdotnet ef migrations remove --forceなぜですか?

4

1 に答える 1