public static void InitDB() { if (ConfigurationManager.AppSettings["DbMigrations"].ToString() == "true") { Database.SetInitializer(new Uco.Models.Migrations.DbMigrationsInitializer()); using (Db _db = new Db()) { HttpContext.Current.Items["_EntityContext"] = _db; if (!_db.Database.Exists()) { _db.Database.Create(); } if (_db.SettingsAll.Count() == 0) { //create DomainPage DomainPage lp = new DomainPage(); lp.ID = 1; lp.ParentID = 0; lp.Title = "DomainPage"; lp.Visible = true; lp.ShowInSitemap = true; lp.ShowInMenu = true; lp.SeoUrlName = "1"; lp.ShowInAdminMenu = true; lp.DomainID = 1; lp.PermissionsView = SF.RolesListToString(new List <string>() { "Admin", "Anonymous" }); lp.PermissionsEdit = SF.RolesListToString(new List <string>() { "Admin" }); _db.DomainPages.Add(lp); _db.SaveChanges(); //create setting Settings SettingsAll = new Settings(); SettingsAll.DomainPageID = lp.ID; SettingsAll.Domain = "Default"; SettingsAll.AdminEmail = "*****@*****.**"; SettingsAll.LanguageCode = ((System.Web.Configuration.GlobalizationSection)ConfigurationManager.GetSection("system.web/globalization")).UICulture;; SettingsAll.Roles = SF.RolesStringAdd("", "Admin"); _db.SettingsAll.Add(SettingsAll); _db.SaveChanges(); //create roles _db.Roles.Add(new Role() { IsSystem = true, Title = "Admin" }); _db.Roles.Add(new Role() { IsSystem = true, Title = "Anonymous" }); _db.SaveChanges(); //update settings reference lp.DomainID = SettingsAll.ID; _db.SaveChanges(); //create UNIQUE INDEX on SeoUrlName _db.Database.ExecuteSqlCommand("CREATE UNIQUE INDEX IX_AbstractPage_SeoUrlName ON AbstractPages (DomainID,RouteUrl,SeoUrlName)"); CleanCache.CleanOutputCache(); //create admin user SF.CreateUser("admin", "adminadmin", "*****@*****.**", new List <string>() { "Admin" }, "Admin"); } } } else { Database.SetInitializer <Db>(null); } }