イニシャライザは、任意の時点でデータベースを初期化するためのクラス。
テスト時に便利である。
初期化のタイミング
初期化をするタイミングには3種類あり、それぞれ別のクラスを継承しなければならない
なお、これらのクラスは全てIDatabaseInitializerインターフェースを実装している
初期化のタイミング |
継承先 |
データベースが存在しない場合 |
CreateDatabaseIfNotExists<TContext> |
アプリケーション実行時に常に |
DropCreateDatabasaAlways<TContexi> |
モデルが変更された時 |
DropCreateDatabasaIfModelChanges<TContext> |
Seedメソッド
初期化するにはイニシャライザーの中でSeedメソッドをオーバーライドする
名前 |
Seed |
所属 |
IDatabaseInitializerインターフェースを実装したクラス |
役割 |
テーブルの初期値をデータコンテキストに挿入し、テーブルに反映させる |
引数 |
TContext |
返り値 |
void |
(例)
protected override void Seed(TContext context)
{
//リストを作る
var members = new List<Member>{};
//コンテキストのプロパティに登録する
members.Foreach(m => context.Members.Add(m));
//DBに登録する
context.SaveChanges();
}
イニシャライザーの登録
イニシャライザーは作っただけでは動かない。
Global.asaxに登録する必要がある
(例)
protected void Application_Start()
{
Database.SetInitializer<TContext>(new TInitializer);
}
最終更新:2015年12月31日 00:51