移行を台無しにしてIgnoreChanges
、最初の移行で使用しましたが、今度はすべての移行を削除して、すべてのロジックを使用した最初の移行から始めたいと思います。
フォルダ内の移行を削除してみAdd-Migration
たところ、完全なファイルが生成されません(最後の移行以降、変更を加えていないため、空です)。
Disable-Migrationsコマンドがあるので、再実行できますEnable-Migrations
か?
移行を台無しにしてIgnoreChanges
、最初の移行で使用しましたが、今度はすべての移行を削除して、すべてのロジックを使用した最初の移行から始めたいと思います。
フォルダ内の移行を削除してみAdd-Migration
たところ、完全なファイルが生成されません(最後の移行以降、変更を加えていないため、空です)。
Disable-Migrationsコマンドがあるので、再実行できますEnable-Migrations
か?
必要がある :
__MigrationHistory
ます(システムテーブルの下にある場合があります)。それでパッケージマネージャーコンソールで次のコマンドを実行します。
Enable-Migrations -EnableAutomaticMigrations -Force
使用の有無にかかわらず使用-EnableAutomaticMigrations
そして最後に、実行できます。
Add-Migration Initial
問題:移行を台無しにして、既存のテーブルを削除せずにリセットしたいと考えています。
問題:EFはテーブルを最初から作成する必要があるため、データベース内の既存のテーブルを使用して移行をリセットすることはできません。
何をすべきか:
Migrations_Historyテーブルから既存の移行を削除します。
移行フォルダから既存の移行を削除します。
add-migrationResetを実行します。これにより、テーブルの作成を含む移行が移行フォルダーに作成されます(ただし、実行されないため、エラーは発生しません)。
次に、MigrationHistoryテーブルに最初の行を作成して、EFが現在の状態のスナップショットを取得できるようにする必要があります。移行を適用すると、EFがこれを行います。ただし、テーブルはデータベースにすでに存在するため、作成したばかりの移行を適用することはできません。したがって、移行に移動し、「Up」メソッド内のすべてのコードをコメントアウトします。
次に、update-databaseを実行します。(実際にはデータベースを変更せずに)移行を適用し、MigrationHistoryにスナップショット行を作成します。
これで移行がリセットされ、通常の移行を続行できます。
どうですか
Update-Database –TargetMigration: $InitialDatabase
パッケージマネージャーコンソールで?すべての更新を非常に初期の状態にリセットする必要があります。
これを修正するには、次のことを行う必要があります。
移行フォルダ内のすべての*.csファイルを削除します。
データベースの_MigrationHistoryテーブルを削除します
走るEnable-Migrations -EnableAutomaticMigrations -Force
走るAdd-Migration Reset
次に、public partial class Reset : DbMigration
クラスで、既存および現在のすべてのテーブルにコメントを付ける必要があります。
public override void Up()
{
// CreateTable(
// "dbo.<EXISTING TABLE NAME IN DATABASE>
// ...
// }
...
}
このビットを見逃すと、すべてが失敗し、最初からやり直す必要があります。
Update-Database -verbose
上記を正しく実行すれば、これは成功するはずです。これで、通常どおり続行できます。
EntityFrameworkCoreで。
移行フォルダからすべてのファイルを削除します。
コンソールに入力
dotnet ef database drop -f -v
dotnet ef migrations add Initial
dotnet ef database update
(またはパッケージマネージャーコンソールの場合)
Drop-Database -Force -Verbose
Add-Migration Initial
Update-Database
UPD:現在の永続データを気にしない場合にのみ実行してください。もしそうなら、グレッグガムの答えを使用してください
.NET CoreでEFを検索すると、これがまだ表示されることを考慮して、ここに回答を投稿します(これは、私を悩ませてきたためです)。EF 6 .NETバージョンには微妙な点があることに注意してください(初期コマンドはありません。「スナップショット」ファイルを削除する必要があります)
(.NET Core 2.1でテスト済み)
手順は次のとおりです。
_efmigrationhistory
ます。ApplicationDbContextSnapshot.cs
を削除します。Add-Migration InitialMigration
注意: すべてのスナップショットファイルを削除する必要があります。データベースを削除するだけで数え切れないほどの時間を費やしました...これを行わないと、空の移行が生成されます。
また、#3では、移行に任意の名前を付けることができます。
いくつかの追加リソースは次のとおりです 。asp.netCORE移行は空で生成されます
Migrations
フォルダを削除してClean
からRebuild
、プロジェクトを削除します。これは私のために働いた。Clean and Rebuildの前は、キャッシュされたメモリに移行がまだ存在していないため、移行はすでに存在していると言っていました。
EntityFramework 6では、次のことを試してください。
Add-Migration Initial
初期移行ファイルを更新するため。
私の問題は、Migrationsフォルダーを手動で削除したことであることが判明しました。コンテンツをバックアップしたかったので、プロジェクトからフォルダをドラッグするだけでした。後で問題を修正しました(バックアップコピーを作成した後)。次に、ソリューションエクスプローラーで右クリックし、ポップアップメニューから[削除]を選択して、移行フォルダーを削除します。
EF6では
Add-Migration Initial
。この方法ではテーブルを削除する必要がない__MigrationHistory
ため、デプロイ時にデータベースに手を置く必要はありません。
Add-Migration ResetMigrations
Up()
メソッドの移行履歴をクリーンアップします。/// <summary>
/// Reset existing migrations by cleaning the __MigrationHistory table
/// and creating a new initial migration with the current model snapshot.
/// </summary>
public partial class ResetMigrations : DbMigration
{
public override void Up()
{
Sql("DELETE FROM [dbo].[__MigrationHistory]");
}
public override void Down()
{
}
}
Net Core 3.0の場合:
移行をリセットする方法を見つけることができませんでした。
また、移行の失敗で問題が発生しましたが、ここで提供されている回答はうまくいきませんでした。.Net Core 3.0 Web APIを使用しており、先月のどこかでデータベースを直接編集しました。はい、私は悪いことをしました。
ここで提案された戦略により、パッケージマネージャーコンソールで多くのエラーが発生しました。
確かに、私はステップを逃したか、正しいファイルをクリアするのを逃したかもしれませんが、それほど力を入れずにこれをクリーンアップする方法があることがわかりました:
これで、空のデータベースでWeb APIを起動すると、エンティティモデルに一致するすべてのテーブルとプロパティが正しく作成されます。
HTH!
UPDATE2020=>エンティティフレームワークの移行をリセット
Add-Migration Initial -Context ApplicationDbContext
ApplicationDbContext =>あなたのコンテキスト。
ただし、既存のIDスキーマのみを更新する必要がある場合は、 https ://stackoverflow.com/a/59966100/4654957を試してください。
VSC(Visual Studio Code)-.Net Core
1.状態を削除します。プロジェクトの移行フォルダーを削除します。
2.データベース内の__MigrationHistoryのレコードを削除します。
3.dotnet ef database drop -v
次に、データベース'<your-database'をサーバー'。'にドロップしてもよろしいですか?(y / N)「N」と書く
4.dotnet efmigrationsはInitialを追加し、次に20211014110429_initial
クラスのコードを__MigrationHistoryに書き込みます
Enable-Migrations -EnableAutomaticMigrations -Force