第一次没有创建数据库

2023-12-06

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

我已经尝试过以下两篇文章,但是,我不知道为什么它不起作用并出现相同的错误。

  1. 如何在不使用更新数据库的情况下生成启用了迁移的 EF6 数据库?
  2. 已为上下文启用迁移“但数据库不存在或不包含映射表”

我已经在网络服务器上发布了我的示例。我在用SQL Server 2012 Express DBMS.

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

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.

我已删除网络服务器上的数据库并重试。但是,我仍然面临同样的错误。现在,有一个没有表的空数据库。

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

我也读过这篇文章post并试图打电话dbContext.Database.Initialize(true); and ((IObjectContextAdapter)myContext).ObjectContext.CreateDatabase()方法,但是仍然不起作用。


首先,自动迁移对于开发来说很有好处,但它是一个hugely在生产中依赖它们是个坏主意。其次,在某些时候您关闭了自动迁移,这就是您的生产数据库中不再创建表的原因。

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

在将架构更新投入生产方面,您有多种选择,但它们都归结为大致相同的过程。

  1. 针对本地数据库生成新的迁移。
  2. 如果您想通过 SQL 更新生产数据库,请运行Update-Database -Script。这将生成一个 SQL 文件,其中包含在数据库上运行以迁移架构的代码。如果您有 DBA,请将其交给您的 DBA,或者您自己查看 SQL 代码,然后通过 Management Studio 将其手动应用到您的数据库。
  3. Run Update-Database。这次没有-Script对本地数据库架构进行更改。
  4. 如果在步骤 2 中未生成 SQL 文件,请在 Visual Studio 的 SQL Server 对象资源管理器中查看本地数据库。右键单击本地数据库并选择“架构比较...”。按照向导与您的生产数据库进行比较。最后,您可以生成一个 SQL 文件,其中包含需要进行的必要更改(如果有的话,您将再次将其交给 DBA),或者您可以直接从 Visual Studio 迁移到生产环境。然而,这并不真正推荐。最好总是生成 SQL,您或您的 DBA 可以在实时应用更改之前对其进行检查。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

第一次没有创建数据库 的相关文章

随机推荐