「データイニシャライザ」の編集履歴(バックアップ)一覧はこちら
「データイニシャライザ」(2015/12/31 (木) 00:51:10) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
イニシャライザは、任意の時点でデータベースを初期化するためのクラス。
テスト時に便利である。
**初期化のタイミング
初期化をするタイミングには3種類あり、それぞれ別のクラスを継承しなければならない
なお、これらのクラスは全てIDatabaseInitializerインターフェースを実装している
|初期化のタイミング|継承先|
|データベースが存在しない場合|CreateDatabaseIfNotExists<TContext>|
|アプリケーション実行時に常に|DropCreateDatabasaAlways<TContexi>|
|モデルが変更された時|DropCreateDatabasaIfModelChanges<TContext>|
**Seedメソッド
初期化するにはイニシャライザーの中でSeedメソッドをオーバーライドする
|名前|Seed|
|所属|IDatabaseInitializerインターフェースを実装したクラス|
|役割|テーブルの初期値をデータコンテキストに挿入し、テーブルに反映させる|
|引数|TContext|
|返り値|void|
(例)
>protected ovveride 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);
>}
イニシャライザは、任意の時点でデータベースを初期化するためのクラス。
テスト時に便利である。
**初期化のタイミング
初期化をするタイミングには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);
>}