.NET Evolve数据库版本管理工具
原帖 :.NET Evolve 数据库版本管理工具 - 宣君 - 博客园 (cnblogs.com)
.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 24 return evolve; 25 }