Asp.net core mvc ASP.NET核心MVC的生产数据库创建/迁移难题

Asp.net core mvc ASP.NET核心MVC的生产数据库创建/迁移难题,asp.net-core-mvc,entity-framework-migrations,dev-to-production,Asp.net Core Mvc,Entity Framework Migrations,Dev To Production,自去年以来,我一直在构建我的ASP.NET核心MVC web应用程序,目前我的项目中有100个迁移文件,因为数据库随着功能和功能的发展而不断发展。我的开发/测试数据库显然与这次迁移同步 现在,是创建生产环境的时候了,我想要一个只有表模式的空数据库。所以,我不能复制我的测试数据库来创建生产数据库 因此,关于创建此生产数据库,我遇到的问题/困境如下:; 1.我可以通过运行Add Migration命令(需要从项目中删除现有迁移文件)创建生产数据库,也可以 2.在SQL管理服务器中创建表架构,并从测试

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

现在,是创建生产环境的时候了,我想要一个只有表模式的空数据库。所以,我不能复制我的测试数据库来创建生产数据库

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

在[1]中,我不确定如何使用同一项目管理我的测试数据库。 对于[2],我不确定是否有任何缺点

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

  • 您当然可以使用VisualStudio来创建或更新数据库表,但这通常只是在您的开发环境中进行的 如果您担心迁移的数量,您仍然可以选择从删除迁移开始,删除迁移历史记录(手动删除表和数据)并创建新的“初始创建”迁移。如果您这样做,您可能希望首先导出任何测试或配置数据,或者确保您有办法重新创建它

  • 对于暂存和生产部署,最好使用SQLServerManagementStudio生成一个脚本来构建表。数据库管理员(如果只有您)可以创建数据库并运行脚本生成表
  • 这是因为登台和生产环境往往比开发环境受到更严格的控制,因此最好了解最适合该环境的流程

    您需要检查dev和staging/production SQL数据库是否设置为匹配的“兼容性级别”,还需要确定是否需要在create上添加任何种子或配置数据

    在SQLServerManagementStudio中,选择适当的选项为所需的表生成脚本

    您还可以使用此过程导出和导入数据-这是配置或测试数据的理想选择


    谢谢!因此,我有几个后续问题是;(1) 在系统投入生产后,连续的数据库更改又如何呢?我是否通过SQL Server管理不断调整生产数据库,而不是使其与迁移保持同步?(2) 我不想在dev中使用新数据库的原因是,我不想丢失数据(除了seed/config数据)。不完全删除数据库就可以迁移到零状态吗?例如,仅通过删除_EFMigrationsHistory表和迁移文件?Hi 1。对于生产,最好假设所有更改都需要编写脚本(并由db管理员运行),因为将Visual Studio连接到您的实时环境是不常见的。对于后续更改,您可以让EF为您创建迁移脚本2。对于开发人员来说,您可以随时备份SQL数据,这将使您能够整理迁移—或者,如果这是一件麻烦事,可以保持迁移的原样,以较容易的为准。