VS 2012でEF 5でEF Code Firstを使用しています。PM update-database
コマンドを使用し、いくつかのテーブルにサンプルデータを入力する簡単なシードメソッドがあります。
X.mdbを削除して再作成したいと思います。更新履歴が同期していないようです。コンテキスト内のすべてのDBSetをコメントアウトすると、update-database
はエラーなしで実行されますが、DBにいくつかのテーブルが残ります。 DBには貴重なデータがないため、すべてをリセットするのが最も簡単なようです。
どうすればこれを達成できますか?
私がそれを正しく理解しているなら...
start clean
が必要な場合:
1)DBを手動で削除-どこにいても(接続がソートされていると仮定します)、または空にしますが、system __MigrationHistory
テーブル-あなたもそれを削除する必要があります。
2)すべてのmigration files
を削除-Migrations
の下にあり、数字などのように名前を付けます-それらをすべて削除し、
3)プロジェクトの再構築移行(およびその他)を含む-そして、プロジェクトが自動的に構築されるように設定(構成)されていることを確認します(場合によっては問題が発生する可能性があります-しかし、そうではない可能性があります)、
4)Add-Migration Initial
を再度実行し、次にUpdate-Database
を実行します
コマンドAdd-Migration "Name_Of_Migration"
を使用して移行を作成する正しい方法を実行した場合、以下を実行してclean start(reset 、もちろんデータの損失あり):
Update-database -TargetMigration:0
通常、downメソッドが実行されたため、DBは空になりました。
Update-database
これにより、現在の移行に合わせてDBが再作成されます
パッケージマネージャーコンソールからドロップ、作成、Seedするシングルライナー:
update-database -TargetMigration:0 | update-database -force
カボム。
EntityFrameworkCoreの場合、次を使用できます。
Update-Database -Migration 0
これにより、データベースからすべての移行が削除されます。次に使用できます:
Remove-Migration
移行を削除します。最後に、移行を再作成し、データベースに適用できます。
Add-Migration Initialize
Update-Database
EFCore v2.1.0でテスト済み
どのように..
static void Main(string[] args)
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<ExampleContext>());
// C
// o
// d
// i
// n
// g
}
これを Programming Entity Framework:Code First 、Pg 28 First Editionから選択しました。
このチュートリアルに従ってデータベースを作成した場合: https://msdn.Microsoft.com/en-au/data/jj193542.aspx
...その後、これはうまくいくかもしれません:
.mdf
および.ldf
ファイルを削除しますdbctx.Database.EnsureDeleted(); dbctx.Database.EnsureCreated();
次の手順を実行します。
Dbset<Item> Items{get;set;}
およびNuget Consoleでこれらのコマンドを実行しますコンテキストには存在しないが、データベースにすでに作成されているテーブルを削除します