web-dev-qa-db-ja.com

既存のEF Code Firstデータベースを最初から削除して再作成する方法

VS 2012でEF 5でEF Code Firstを使用しています。PM update-databaseコマンドを使用し、いくつかのテーブルにサンプルデータを入力する簡単なシードメソッドがあります。

X.mdbを削除して再作成したいと思います。更新履歴が同期していないようです。コンテキスト内のすべてのDBSetをコメントアウトすると、update-databaseはエラーなしで実行されますが、DBにいくつかのテーブルが残ります。 DBには貴重なデータがないため、すべてをリセットするのが最も簡単なようです。

どうすればこれを達成できますか?

68
g.pickardou

私がそれを正しく理解しているなら...

start cleanが必要な場合:

1)DBを手動で削除-どこにいても(接続がソートされていると仮定します)、または空にしますが、system __MigrationHistoryテーブル-あなたもそれを削除する必要があります。

2)すべてのmigration filesを削除-Migrationsの下にあり、数字などのように名前を付けます-それらをすべて削除し、

3)プロジェクトの再構築移行(およびその他)を含む-そして、プロジェクトが自動的に構築されるように設定(構成)されていることを確認します(場合によっては問題が発生する可能性があります-しかし、そうではない可能性があります)、

4)Add-Migration Initialを再度実行し、次にUpdate-Databaseを実行します

89
NSGaga

コマンドAdd-Migration "Name_Of_Migration"を使用して移行を作成する正しい方法を実行した場合、以下を実行してclean start(reset 、もちろんデータの損失あり):

  1. Update-database -TargetMigration:0

    通常、downメソッドが実行されたため、DBは空になりました。

  2. Update-database

    これにより、現在の移行に合わせてDBが再作成されます

54
Daf De Giraf

パッケージマネージャーコンソールからドロップ、作成、Seedするシングルライナー:

update-database -TargetMigration:0 | update-database -force

カボム。

26
Amadeo Gallardo

EntityFrameworkCoreの場合、次を使用できます。

Update-Database -Migration 0

これにより、データベースからすべての移行が削除されます。次に使用できます:

Remove-Migration

移行を削除します。最後に、移行を再作成し、データベースに適用できます。

Add-Migration Initialize
Update-Database

EFCore v2.1.0でテスト済み

17
Gizmo3399

どのように..

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から選択しました。

3
SAm

このチュートリアルに従ってデータベースを作成した場合: https://msdn.Microsoft.com/en-au/data/jj193542.aspx

...その後、これはうまくいくかもしれません:

  1. プロジェクトディレクトリ内のすべての.mdfおよび.ldfファイルを削除します
  2. [表示]/[SQL Serverオブジェクトエクスプローラー]に移動し、(localdb)\ v11.0サブノードからデータベースを削除します。 https://stackoverflow.com/a/15832184/2279059 も参照してください
1
Florian Winter

dbctx.Database.EnsureDeleted(); dbctx.Database.EnsureCreated();

0
Greck

次の手順を実行します。

  1. コンテキストから削除する必要があるオブジェクトを削除します// Dbset<Item> Items{get;set;}およびNuget Consoleでこれらのコマンドを実行します
  2. add-migration [contextName]
  3. update-database -verbose

コンテキストには存在しないが、データベースにすでに作成されているテーブルを削除します

0
Shaahin