35

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

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

4

2 に答える 2

55

データベースに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());
于 2013-03-01T16:53:46.427 に答える
0

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

于 2016-11-29T16:44:32.193 に答える