ASP.NET 核心 MVC 的生产数据库创建/迁移困境

Production Database Creation / Migration dilemma for ASP.NET Core MVC

自去年以来,我一直在构建我的 ASP.NET 核心 MVC Web 应用程序,目前我的项目中有 100 个迁移文件,因为数据库随着特性和功能的发展而发展。我的开发/测试数据库显然与此迁移同步。

现在是创建生产环境的时候了,我想要一个只有 table 架构的空数据库。所以,我无法复制我的测试数据库来创建生产数据库。

因此,关于创建此生产数据库,我遇到的问题/困境如下; 1. 我可以通过 运行 Add-Migration 命令创建我的生产数据库(为此我需要从项目中删除现有的迁移文件),或者 2. 在 SQL 管理服务器中创建 table 模式,并保留来自测试数据库

的 __EFMigrationsHistory

对于 [1],我不确定今后我将如何使用同一个项目管理我的测试数据库。 有了[2],不知道有没有缺点

那么,生产部署的标准或最佳实践是什么?

  1. 您当然可以使用 Visual Studio 来创建或更新数据库表,但这通常只在您的开发环境中进行。

如果您担心自己的迁移数量,您仍然可以选择通过删除它们重新开始,并删除您的迁移历史记录(并手动删除您的表和数据)并创建一个新的 'Initial create' 迁移。如果您这样做,您可能需要先导出任何测试或配置数据,或者确保您有办法重新创建它。

  1. 对于暂存和生产部署,最好使用 SQL Server Management Studio 生成脚本来构建您的表。数据库管理员 - 或者您,如果只是您 - 可以创建数据库和 运行 生成表的脚本。

这是因为暂存和生产环境往往比开发受到更严格的控制,因此最好了解最适合该环境的流程。

您需要检查您的开发和 staging/production SQL 数据库设置是否匹配 'compatibility level',并且还需要决定是否需要添加任何种子或配置数据关于创建。

在SQL Server Management Studio 中,select 适当的选项可以为所需的表生成脚本。

https://docs.microsoft.com/en-us/sql/ssms/scripting/generate-scripts-sql-server-management-studio?view=sql-server-ver15

您还可以使用此过程导出和导入数据 - 这非常适合配置或测试数据。

https://dzone.com/articles/generate-database-scripts-with-data-in-sql-server