跳到主要内容
版本:Next

数据库迁移脚本使用

本文档引用的文件

目录

  1. 简介
  2. 项目结构
  3. 核心组件
  4. 架构概述
  5. 详细组件分析
  6. 依赖分析
  7. 性能考虑
  8. 故障排除指南
  9. 结论

简介

本文档旨在为开发人员提供关于如何使用 UpdateDB.batUpdateMigrations.bat 脚本进行数据库迁移的完整指南。这些脚本支持 MySQL、PostgreSQL 和 SQL Server 三种数据库平台,通过集成 EF Core 的迁移机制,实现数据库 Schema 的更新与数据迁移。文档还将解释运行时迁移器(CMSPluginRuntimeMigrator)与设计时脚本之间的协同工作机制,确保数据库结构与代码模型保持一致。

项目结构

本项目采用模块化设计,各数据库平台(MySQL、PostgreSQL、SQL Server)分别拥有独立的项目结构,包含各自的 DbContextDbContextFactory 以及迁移脚本。所有迁移脚本均位于各自平台项目的 Scripts 目录下。

Diagram sources

Section sources

核心组件

系统的核心迁移机制由多个组件协同工作:设计时的批处理脚本(UpdateDB.batUpdateMigrations.bat)用于生成和应用迁移,而运行时的 CMSPluginRuntimeMigrator 则在应用程序启动或项目加载时自动执行数据库迁移,确保环境一致性。

Section sources

架构概述

系统采用分层架构,将数据库迁移逻辑分为设计时和运行时两个阶段。设计时通过 EF Core CLI 命令生成和更新迁移文件;运行时通过依赖注入的服务自动执行迁移。

Diagram sources

详细组件分析

设计时迁移脚本分析

UpdateMigrations.bat 脚本

该脚本用于生成新的迁移文件。其主要功能是进入项目根目录并执行 dotnet ef migrations add 命令,创建初始迁移或后续更新迁移。脚本中注释部分提供了添加后续迁移的示例命令。

Diagram sources

UpdateDB.bat 脚本

该脚本用于将已生成的迁移应用到目标数据库。它通过 dotnet ef database update 命令执行所有待应用的迁移,使数据库 Schema 与代码模型同步。

Diagram sources

运行时迁移机制分析

CMSPluginRuntimeMigrator

这是运行时迁移的核心组件,实现了 IProjectRuntimeMigrator 接口。当项目加载器 (IProjectRunner) 加载工程时,该组件会被调用,负责执行数据库迁移流程。

Diagram sources

Section sources

依赖分析

系统各组件之间存在明确的依赖关系,遵循依赖倒置原则,通过接口和依赖注入实现松耦合。

Diagram sources

Section sources

性能考虑

  • 迁移执行时机:设计时迁移应在开发阶段完成,避免在生产环境执行耗时的模式变更。
  • 批量迁移UpdateDB.bat 会一次性应用所有待处理的迁移,建议在非高峰时段执行。
  • 连接管理:运行时迁移通过 DI 容器获取数据库连接,确保连接的正确生命周期管理。
  • 日志记录:所有迁移操作均有详细日志输出,便于监控和故障排查。

故障排除指南

常见问题及解决方案:

  1. EF Core 工具未安装:确保已全局安装 dotnet-ef 工具。
  2. 数据库连接失败:检查 appsettings.json 中的连接字符串配置。
  3. 迁移冲突:多人开发时,应协调迁移文件的添加,避免冲突。
  4. 运行时迁移不执行:确认 CMSPluginRuntimeMigrator 已正确注册到 DI 容器。
  5. 平台特定问题:不同数据库平台可能有语法差异,需在目标平台上测试迁移脚本。

Section sources

结论

本文档详细介绍了基于 EF Core 的多数据库平台迁移机制。通过 UpdateMigrations.batUpdateDB.bat 脚本实现设计时的迁移管理,结合 CMSPluginRuntimeMigrator 实现运行时的自动迁移,形成了完整的数据库版本控制方案。该机制确保了开发、测试和生产环境之间数据库结构的一致性,提高了系统的可靠性和可维护性。