【问题标题】:Production Database Creation / Migration dilemma for ASP.NET Core MVCASP.NET Core MVC 的生产数据库创建/迁移困境
【发布时间】:2020-05-07 01:41:01
【问题描述】:

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

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

因此,我对创建此生产数据库的问题/困境如下; 1. 我可以通过运行 Add-Migration 命令创建我的生产数据库(为此我需要从项目中删除现有的迁移文件),或者 2. 在 SQL Management Server 中创建表模式,并保留测试数据库中的 __EFMigrationsHistory

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

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

【问题讨论】:

    标签: asp.net-core-mvc entity-framework-migrations dev-to-production


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

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

    1. 对于暂存和生产部署,最好使用 SQL Server Management Studio 生成脚本来构建表。数据库管理员(或者只有您自己)可以创建数据库并运行脚本来生成表。

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

    您需要检查您的开发和暂存/生产 SQL 数据库是否设置为匹配的“兼容性级别”,还需要确定是否需要在创建时添加任何种子或配置数据。

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

    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

    【讨论】:

    • 谢谢!所以,我有几个后续问题; (1) 系统上线后数据库的连续变化怎么办?我是否继续通过 SQL Server Management 调整生产数据库,而不是使其与 Migration 保持同步? (2) 我不想在 dev 中使用新数据库的原因是,我不想丢失数据(除了种子/配置数据)。在不完全删除数据库的情况下,是否可以将迁移为零状态?比如说,只删除 __EFMigrationsHistory 表和迁移文件?
    • 您好 1. 对于生产,最好假设所有更改都需要编写脚本(并由数据库管理员运行),因为将 Visual Studio 连接到您的实时环境是不常见的。对于后续更改,您可以让 EF 为您创建迁移脚本docs.microsoft.com/en-us/ef/core/managing-schemas/migrations/…
    • 2.对于开发人员,您始终可以备份您的 SQL 数据,这将让您整理您的迁移 - 或者如果这很麻烦,请保持原样,以更容易者为准。
    猜你喜欢
    • 1970-01-01
    • 2021-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-21
    相关资源
    最近更新 更多