カスタムデータベース初期化子を作成し、Seed
を上書きします メソッド
public class MyContextInitializer
: DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
context.ContactTypes.Add(new ContactType { DisplayName = "Home" });
context.ContactTypes.Add(new ContactType { DisplayName = "Mobile" });
context.ContactTypes.Add(new ContactType { DisplayName = "Office" });
context.ContactTypes.Add(new ContactType { DisplayName = "Fax" });
//EF will call SaveChanges itself
}
}
次に、この初期化子を派生コンテキストMyContext
に登録します :
Database.SetInitializer<MyContext>(new MyContextInitializer());
これは、Database
の静的メソッドです。 クラスであり、アプリケーションの起動時にどこかで呼び出す必要があります。また、コンテキストの静的コンストラクターに入れて、最初のコンテキストインスタンスを作成する前にイニシャライザーが設定されていることを確認することもできます。
static MyContext()
{
Database.SetInitializer<MyContext>(new MyContextInitializer());
}
ベース初期化子の代わりにDropCreateDatabaseIfModelChanges<T>
DropCreateDatabaseAlways<T>
から派生することもできます またはCreateDatabaseIfNotExists<T>
それがあなたのニーズをよりよく満たすなら。