データイニシャライザ

イニシャライザは、任意の時点でデータベースを初期化するためのクラス。
テスト時に便利である。

初期化のタイミング

初期化をするタイミングには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);
}

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2015年12月31日 00:51