takachaa / .net-Framework

0 stars 0 forks source link

【MVC】イニシャライザ(initialize:初期化)について #10

Open takachaa opened 7 years ago

takachaa commented 7 years ago

イニシャライザ(initialize:初期化)

下記のようなファイルを用意することでアプリケーションを実行する度にデータベースを作成することができてたいりする。

StandardInitializer.cs

using System;
using System.Collections.Generic;
using System.Data.Entity;

namespace Chrowa3.Models
{
    public class StandardInitializer : CreateDatabaseIfNotExists<StandardContext>
    {
        protected override void Seed(StandardContext context)
        {
            var books = new List<Book> {
                new Book {
                    Title = "C#",
                    Price = 4800,
                    ISBN = "978-4-87311-650-1"
                },
                new Book {
                    Title = "JavaScript",
                    Price = 4536,
                    ISBN = "978-4-87311-573-3"
                },
                new Book {
                    Title = "Ruby",
                    Price = 4104,
                    ISBN = "978-4-87311-573-3"
                }
            };

            books.ForEach(c => context.Books.Add(c));

            context.SaveChanges();
        }
    }
}
クラス名 説明
DropCreateDatabaseAlways アプリケーションを実行する度にデータベースを作成
CreateDatabaseIfNotExists データベースが存在しない場合にデータベースを作成
DropCreateDatabaseIfModelChanges モデルが変更された場合にデータベースを作成
takachaa commented 7 years ago

イニシャライザーも以下のようにGlobal.asax.csファイルから初期化として呼び出す

 protected void Application_Start()
 {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            Database.SetInitializer<MvcBasicContext>(new StandardInitializer ());
 }