数据库未在启动时创建

时间:2018-05-17 12:19:28

标签: c# asp.net asp.net-mvc

启动我的应用程序时,不再创建我的数据库。我们是四个人在同一个项目上工作,只有我才能在启动时创建数据库。它以前工作,我不知道我改变了什么。我已经多次删除了该项目,并从我们的github克隆了它。 我已经多次重新启动了我的计算机和视觉工作室,但没有任何工作。我们已经搜索了问题,但我们无法解决它。如果有人能帮助我,我将不胜感激。是否有可能我错误地更改了一些选项,因为只有我才能创建数据库?

这是我的IdentityDbContext

public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
    public ApplicationDbContext()
        : base("TurreKlippDb", throwIfV1Schema: false)
    {
    }

    public static ApplicationDbContext Create()
    {
        return new ApplicationDbContext();

    }


    public DbSet<Categories> Categories { get; set; }
    public DbSet<Saloon> Saloon { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
    }

}

我的DataInitializer

public class DataInitializer :
DropCreateDatabaseIfModelChanges<ApplicationDbContext>
{

    protected override void Seed(ApplicationDbContext context)
    {
        var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));
        var UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(context));



        // In Startup iam creating first Admin Role and creating a default Admin User    
        if (!roleManager.RoleExists("Admin"))
        {

            // first we create Admin rool   
            var role = new IdentityRole();
            role.Name = "Admin";
            roleManager.Create(role);
        }

        if (!roleManager.RoleExists("HairSaloon"))
        {

            // create HairSaloon rool   
            var role = new IdentityRole();
            role.Name = "HairSaloon";
            roleManager.Create(role);
        }


        if (!context.Users.Any(x => x.UserName == "admin@live.se"))
        {
            PasswordHasher pwdHash = new PasswordHasher();
            string pwd = pwdHash.HashPassword("123");
            var saloon = new ApplicationUser();


            saloon.PasswordHash = pwd;
            saloon.UserName = "admin@live.se";
            saloon.Email = "admin@live.se";
            saloon.CompanyName = "AdminSaloon";

            saloon.SecurityStamp = Guid.NewGuid().ToString();
            context.Users.Add(saloon);
            context.SaveChanges();

            UserManager.AddToRole(saloon.Id, "Admin");
            context.SaveChanges();
        }




        var l = new List<ApplicationUser>();

        var lista = new List<String>();

        lista.Add("Herrklippning");
        lista.Add("Damklippning");
        lista.Add("Barnklippning");
        lista.Add("Ansiktsbehandlingar");
        lista.Add("Fransbehandlingar");
        lista.Add("Brynbehandlingar");
        lista.Add("Hudbehandlingar");
        lista.Add("Injektionsbehandlingar");
        lista.Add("Makeup");
        lista.Add("Hårborttaggning");
        lista.Add("Vaxningar");
        lista.Add("Naglar");


        foreach (var item in lista)
        {
            context.Categories.Add(
                new Categories
                {
                    CategoryName = item,
                    Saloons = l
                });
            context.SaveChanges();
        }
    }
}

我的Global.asax

    public class MvcApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        Database.SetInitializer(new DataInitializer());
        AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);
    }
}

我的连接字符串

<connectionStrings>
    <add name="TurreKlippDb" connectionString="Data Source=(LocalDb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\TurreKlippDb.mdf;Initial Catalog=TurreKlippDb;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>

1 个答案:

答案 0 :(得分:0)

您的代码似乎没问题(我希望您没有得到任何编译或运行时错误)。 只有当您尝试从数据库访问对象时才会创建数据库。可能您没有尝试从数据库访问任何对象(例如:在索引页面上显示数据或其他内容)。如果您已经尝试访问数据并且数据库没有创建,那么您将收到错误。如果是这样,那么告诉我们错误。