Asp.net mvc 第一次未创建数据库

Asp.net mvc 第一次未创建数据库,asp.net-mvc,entity-framework-6,database-migration,Asp.net Mvc,Entity Framework 6,Database Migration,如何使用EF6重新创建数据库 我已经尝试了以下两个帖子,但我不知道为什么它不工作,并得到相同的错误 我已经在web服务器上发布了我的示例。我正在使用Sql Server 2012 Express数据库管理系统 当我创建了我的应用程序并将其发布到web服务器上时,它运行良好。它已经自动创建了数据库。之后,我在ApplicationDBContext中做了一些更改,并在IdentityModes(ApplicationUser)中添加了一些属性。然后,我在本地IIS Express上迁移了数据库

如何使用EF6重新创建数据库

我已经尝试了以下两个帖子,但我不知道为什么它不工作,并得到相同的错误

  • 我已经在web服务器上发布了我的示例。我正在使用Sql Server 2012 Express数据库管理系统

    当我创建了我的应用程序并将其发布到web服务器上时,它运行良好。它已经自动创建了数据库。之后,我在
    ApplicationDBContext
    中做了一些更改,并在
    IdentityModes(ApplicationUser)
    中添加了一些属性。然后,我在本地IIS Express上迁移了数据库,它工作得很好。然后,我尝试在web服务器上再次发布我的示例,但这次它显示了一个错误

    Migrations is enabled for context 'ApplicationDbContext' but the database does 
    not exist or contains no mapped tables. Use Migrations to create the database 
    and its tables, for example by running the 'Update-Database' command from the 
    Package Manager Console.
    
    我已删除web服务器上的数据库并重试。但是,我仍然面临着同样的错误。现在,有一个没有表的空数据库

    应用程序正在用户注册时创建数据库


    我也读过这篇并尝试调用
    dbContext.Database.Initialize(true)
    ((IObjectContextAdapter)myContext).ObjectContext.CreateDatabase()
    方法,但仍然不起作用

    首先,自动迁移对开发很好,但在生产中依赖它们是一个非常糟糕的主意。第二,在某个时候,您关闭了自动迁移,这就是为什么您的生产数据库不再在其中创建表的原因

    继续并关闭自动迁移;即使在开发中,也最好通过生成迁移、查看将要执行的代码,然后运行
    updatedatabase
    来应用这些更改,从而准确地了解您对数据库所做的更改

    在让模式更新进入生产环境方面,您有很多选择,但它们都可以归结为大致相同的过程

  • 根据本地数据库生成新的迁移
  • 如果要通过SQL更新生产数据库,请运行
    updatedatabase-Script
    。这将生成一个SQL文件,其中包含要在数据库上运行的代码,以迁移模式。如果您有DBA,请将其交给DBA,或者自己检查SQL代码,然后通过ManagementStudio将其手动应用于数据库
  • 运行
    更新数据库
    。这次没有使用
    -Script
    对本地数据库架构进行更改
  • 如果在步骤2中没有生成SQL文件,请在Visual Studio的SQL Server对象资源管理器中查看本地数据库。右键单击本地数据库并选择“模式比较…”。按照向导与生产数据库进行比较。最后,您可以生成一个SQL文件,其中包含需要进行的必要更改(如果有DBA,您也可以将更改交给DBA),也可以直接从VisualStudio迁移到生产环境。然而,这并不是真正的建议。最好是生成SQL,然后您或您的DBA可以在应用更改之前对其进行检查

  • 克里斯·普拉特是对的

    我下载了一个项目,我需要在其中运行“更新数据库”

    以下是快速截图

    然后在VisualStudio的底部

     PM> Update-Database
    

    完成

    谢谢Chris,现在,它正在工作。当启用
    迁移
    功能时,数据库不会被创建。因此,我从项目中删除了
    迁移
    文件夹,并从数据库中删除了
    \u迁移历史
    表,然后我再次发布了它。然后重试,它像魔术一样工作。再次感谢Chris我从两天开始就在努力解决这个问题。