gpt4 book ai didi

asp.net-mvc - 数据库不是第一次创建

转载 作者:行者123 更新时间:2023-12-04 02:05:28 24 4
gpt4 key购买 nike

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

我已经尝试了以下两个帖子,但我不知道为什么它不起作用并出现相同的错误。

  1. How do I generate an EF6 database with migrations enabled, without using update-database?
  2. Migrations is enabled for context ''but the database does not exist or contains no mapped tables

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

当我创建我的应用程序并将其发布到网络服务器上时,它工作正常。它已自动创建数据库。之后,我对 ApplicationDBContext 进行了一些更改,并在 IdentityModes(ApplicationUser) 中添加了一些属性。然后我在我的Local 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.

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

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

我也读过这个 post 并尝试调用 dbContext.Database.Initialize(true);((IObjectContextAdapter)myContext).ObjectContext.CreateDatabase() 方法,但仍然没有在职的。

最佳答案

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

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

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

  1. 针对您的本地数据库生成新的迁移。
  2. 如果您想通过 SQL 更新生产数据库,请运行 Update-Database -Script。这将生成一个 SQL 文件,其中包含要在数据库上运行以迁移架构的代码。如果您有 DBA,请将其交给您,或者您自己查看 SQL 代码,然后通过 Management Studio 手动将其应用到您的数据库。
  3. 运行更新数据库。这次没有 -Script 来更改您的本地数据库架构。
  4. 如果您没有在第 2 步中生成 SQL 文件,请在 Visual Studio 的 SQL Server 对象资源管理器中查看您的本地数据库。右键单击那里的本地数据库并选择“Schema Compare ...”。按照向导与您的生产数据库进行比较。最后,您可以生成一个 SQL 文件,其中包含需要进行的必要更改(同样,如果您有 DBA,您可以将其交给您的 DBA),或者您可以直接从 Visual Studio 迁移到生产环境。然而,这并不是真的推荐。最好始终生成 SQL,然后您或您的 DBA 可以在实时应用更改之前对其进行检查。

关于asp.net-mvc - 数据库不是第一次创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25980435/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com