.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         }

 


posted @ 2023-09-06 15:28  你所拨打的号码是空号  阅读(40)  评论(0编辑  收藏  举报