祖传代码之无实施,自动化,升级数据结构,采坑经验分享,使用FluentMigrator进行数据库迁移
前言:如何避免成为炮灰?花时间研究炮弹技术,这样自己就不是炮灰了。或者有人带你用1分钟的时间带你理清底层逻辑吗?
标题:祖传代码之无实施,自动化,升级数据结构,采坑经验分享
技术点:Fluent Migrator是.NET下的一个数据库迁移框架。
背景:升级祖传项目,雷打不动的传统开发方式,编码先行,政治原因开发人员不接触客户及客户生产环境,代码都迭代更新十多年,客户版本还停留在十年前。沟通不畅,技术迭代,传递理解衰减,其中数据库结构变动(表新增、删除,表列新增、修改、删除等)反复多次。如何保证表结构正常升级,代码得优雅呢?分享下踩坑经验。
先说说基础原理:
参考:https://www.cnblogs.com/chengtian/archive/2018/11/10/9938756.html
执行过后数据库会标记这个已执行过的标识后面跳过这个标识对应的脚本
我们可以利用Migration基类,编写数据结构改变,它有两个方法Up()和Down()。up方法用于升级迁移,down用于回滚。
可重复执行的脚本
------分割线 技术分享完下面说说其中的坑。
对于敏捷项目倒是没啥问题。刚才的背景 祖传代码到底有什么问题呢?
比如
步骤一 1.001.sql脚本新增列A
2.002.sql脚本依赖列A 中001.sql
步骤二 001.sql 有修改起把A干掉了 或者其他管理表有依赖 因为标记过 执行时间就变为最新
步骤三 步骤一和二做完去了生产环境 导致先执行步骤一中的2. 导致找不报错 导致凉凉 哈哈哈
一般都会入的一个坑是 按表来
后面最后都会选择用时间来