.NET Evolve 数据库版本管理工具

打印 上一主题 下一主题

主题 918|帖子 918|积分 2754

.NET Evolve数据库版本管理工具

1.简介

提到数据库版本管理,Java领域开发首先会想到大名鼎鼎的flyway。但是它不适用.NET领域,那么.NET领域也需要做数据库版本管理,该用什么工具?自行造轮子?.NET领域的解决方案就是Evolve,这是一个开源库。[仓库地址](GitHub - lecaillon/Evolve: Database migration tool for .NET and .NET Core projects. Inspired by Flyway.)
Evolve 翻译成中文意为 “进化、演变”
支持数据源有PostgreSQL,SQL Server,SQLite,MySQL,MariaDB,Cassandra,CockroachDB。文档介绍详见[官方网站](Getting Started :: Evolve (evolve-db.netlify.app))
2.开始

在NuGet仓库搜索Evolve第一个就是。
下面便是Evolve的使用方法,非常简单,只需指定一个数据库连接对象,数据库脚本(建库脚本)
脚本通常是DDL sql文件,可用Navicat等可视化工具建库完成后,导出为sql文件
  1.         private static Evolve BuildEvolve(IDbConnection cnx)
  2.         {
  3.             var evolve = new Evolve((System.Data.Common.DbConnection)cnx, msg => Debug.WriteLine(msg))
  4.             {
  5.                 IsEraseDisabled = true,
  6.                 // 用于记录数据库版本记录的表,指定表名后,会自动创建
  7.                 MetadataTableName = "db_changelogs"
  8.             };
  9.             // 指定数据库脚本所在目录
  10.             var dbPaths = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "db_migrations");
  11.             if (Directory.Exists(dbPaths) && Directory.GetFiles(dbPaths, "*.sql").Length > 0)
  12.             {
  13.                 evolve.Locations = new[] { dbPaths };
  14.             }
  15.             else
  16.             {
  17.                 // 未找到数据库脚本的逻辑处理,这里可不做任何处理接返回
  18.                 evolve.EmbeddedResourceAssemblies = new Assembly[]
  19.                 {
  20.                     typeof(SqlDbClientContext).Assembly
  21.                 };
  22.             }
  23.             return evolve;
  24.         }
复制代码
只需在需要初始化数据库的地方调用上面的方法即可完成数据库版本控制。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

道家人

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表