web-dev-qa-db-ja.com

Code First Drop-CreateモードでEntity Frameworkを使用するにはどうすればよいですか?

Entity Framework v4を使用しています。 Nerd Dinner tutorial の指示に従いました。私は現在開発モードです(より高い環境にはリリースされていません)。モデルは依然として非常に揮発性であり、データを保持する必要がないため、新しいデプロイメントごとにテーブルを再作成したいと思います。ただし、これは発生しません。テーブルは作成/変更されません。または、DBに何も起こりません。パッケージマネージャーコマンドenable-migrations、add-migration(initial)を使用して移行モデルに移行する場合、これは機能し、移行を使用します。ただし、詳細な移行はまだしたくないため、最初の作成スクリプトのみが必要なので、毎回手動で移行フォルダーを削除し、コマンドを再実行(enable-migrations、add-migration)し、手動でデータベースを削除する必要があります何でも変えます。

最初に発生するコードのドロップ/作成動作を取得するにはどうすればよいですか?

34
Ryan Langton

DropCreateDatabaseAlways データベースの初期化子を使用します。アプリドメインでコンテキストを最初に使用するときに常にデータベースを再作成します。

Database.SetInitializer(new DropCreateDatabaseAlways<YourContextName>());

実際、データベースをシードする場合は、DropCreateDatabaseAlwaysから継承される独自の初期化子を作成します。

public class MyInitializer : DropCreateDatabaseAlways<YourContextName>
{
     protected override void Seed(MagnateContext context)
     {
         // seed database here
     }
}

コンテキストを最初に使用する前に設定します

Database.SetInitializer(new MyInitializer());
51

データベースが既に存在し、モデルを変更する場合は、DropCreateDatabaseIfModelChanges<YourContextName>を使用します

0
Sam Yim