NeuCharFramework (NCF)
  • NCF - NeuCharFramework
  • 项目

    • 准备
    • 基础库源码分析
    • 动态WebApiEngine
    • 部署
    • MCP (Model Context Protocol) 模块
    • Senparc.AI
  • 帮助

    • 在线资源
    • 问答社区
    • QQ群(147054579)
    • Senparc微信SDK
  • Gitee
  • GitHub
  • English
  • 简体中文
GitHub
  • NCF - NeuCharFramework
  • 项目

    • 准备
    • 基础库源码分析
    • 动态WebApiEngine
    • 部署
    • MCP (Model Context Protocol) 模块
    • Senparc.AI
  • 帮助

    • 在线资源
    • 问答社区
    • QQ群(147054579)
    • Senparc微信SDK
  • Gitee
  • GitHub
  • English
  • 简体中文
GitHub
  • NCF 概要

    • NCF - NeuCharFramework
    • 关于 NCF
    • 环境要求
    • 前后端分离模式
    • Xncf模块简介
  • 准备开发

    • 获取 NCF 模板源码
    • 使用 Visual Studio 运行 NCF
    • 使用 CLI 运行 NCF
    • 安装
    • 管理员登录
    • 管理员后台
    • appsettings.json 配置
    • 模块管理
    • 获取文档
  • 配置

    • 入口文件
    • 数据库设置
    • appsettings.json 配置
    • Docker
    • Dapr
    • 配置多租户
    • Redis 缓存
  • 模块化开发

    • NCF 模块化开发思想
    • Xncf 的构成
    • 创建第一个 Xncf 模块
    • Xncf 模块 Sample 详解
    • 实现自己的业务逻辑
    • 更新 Xncf 模块
    • 模块之间如何调用
    • 发布Xncf 模块到nuget.org
    • 更新基础库
    • Xncf 模块开发
    • 嵌入静态资源文件到NCF中
    • 发布本地Nuget包
    • 进阶
  • 数据库

    • 数据库设置
    • 多数据库支持
    • 指定数据库
    • 更新 Senparc.Service 项目的数据库迁移文件(Migrations)
    • 多数据库原理
    • 数据库停机坪(DatabasePlant)
    • 停机坪操作数据库迁移和更新
  • 单元测试

    • NCF 单元测试介绍
    • 开始开发
    • 进阶
    • 附录
  • Q&A

    • NCF名词解释
    • NCF常见问题
  • 新发布

    • 新功能
    • 升级指导
    • 日志

更新 Senparc.Service 项目的数据库迁移文件(Migrations)

以更新 Senparc.Service 项目为例,进行手动更新。

通常,更新 Senparc.Service 的数据库迁移文件,是因为在 NCF 模板项目中添加/修改/删除了某些数据库对应的实体信息。

使用 Code-First 修改数据库

例如,我们在 AdminUserInfo 类中添加了一个属性:

Image Text

使用 EF Core 的 Add-Migration 命令生成迁移文件

由于 Senparc.Service 项目不是标准的 XNCF 模块(本质上是 XNCF 模块,但文件结构比较特殊),因此不能在 Admin 后台使用 Senparc.Xncf.XncfBuilder 模块直接进行操作,否则系统会按照 XNCF 的目录结构生成文件(当然这也不影响编译)。

我们可以使用命令行,以 CMD 命令行为例,进入 Senparc.Service 目录:

E:\Senparc项目\NeuCharFramework\NCF\src\Senparc.Service>

输入命令:

dotnet ef migrations add AddOpenId -c SystemServiceEntities_SqlServer -o Migrations/Migrations.SqlServer -s ../Senparc.Web.DatabasePlant

上述命令中 AddOpenId 是本次更新的名称,可以自由填写,SystemServiceEntities_SqlServer 是指向 SQL Server 的数据库上下文(DbContext)实现。当我们需要同时更新 MySQL 数据库时,就可以替换成 SystemServiceEntities_MySQL(注意对应实际的类名,类名也可能完全不体现数据库类型)。

执行命令即可完成 SQL Server 的迁移文件更新:

Image Text 上图中:

①:在 Senparc.Service 目录下,输入的命令

②:显示了当前正在使用的数据库连接字符串

③:显示了更新的 SQL Server 数据库类型、DbContext 上下文类名等信息

在 VS 中可以看到新建了 20210809155647_AddOpenId.cs 文件,以及更新了快照文件 SystemServiceEntities_SqlServerModelSnapshot.cs:

Image Text

通过 20210809155647_AddOpenId.cs 文件可以看到 OpenId 这个属性(对应数据库表的列已经被添加)

Image Text

更新 Senparc.Service 版本号

我们建议您在更新了内容之后,同步更新 Senparc.Service 的版本号,此时把它和普通的 XNCF 一样来对待。

/Senparc.Service/XncfModules/Register.cs

设置新的 Version 参数,如:

public override string Version => "0.3.4-beta4";

更新数据库

使用 CMD 命令行,在 Senparc.Service 目录下执行命令:

dotnet ef database update -c SystemServiceEntities_SqlServer -s ../Senparc.Web.DatabasePlant

其中 SystemServiceEntities_SqlServer 根据数据库类型灵活调整

Image Text

上图运行结果中:

①:执行更新数据库命令

②:提示完成最新的迁移更新

数据库表前后对比

图片状态
Image Text更新前
Image Text更新后
在 GitHub 上编辑此页
上次更新:
贡献者: JeffreySu, MLTechnology
Prev
指定数据库
Next
多数据库原理