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的使用方法,非常简单,只需指定一个数据库连接对象,数据库脚本(建库脚本)
代码语言:javascript复制
private static Evolve BuildEvolve(IDbConnection cnx)
{
var evolve = new Evolve((System.Data.Common.DbConnection)cnx, msg => Debug.WriteLine(msg))
{
IsEraseDisabled = true,
// 用于记录数据库版本记录的表,指定表名后,会自动创建
MetadataTableName = "db_changelogs"
};
// 指定数据库脚本所在目录
var dbPaths = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "db_migrations");
if (Directory.Exists(dbPaths) && Directory.GetFiles(dbPaths, "*.sql").Length > 0)
{
evolve.Locations = new[] { dbPaths };
}
else
{
// 未找到数据库脚本的逻辑处理,这里可不做任何处理接返回
evolve.EmbeddedResourceAssemblies = new Assembly[]
{
typeof(SqlDbClientContext).Assembly
};
}
return evolve;
}
脚本通常是DDL sql文件,可用Navicat等可视化工具建库完成后,导出为sql文件
推荐阅读:
Blazor学习之旅 (11) 简易SignalR聊天室
.NET 8 Release Candidate 1 (RC1)现已发布,包括许多针对ASP.NET Core的重要改进!
每个.NET开发都应掌握的C#异常处理知识点
10款Visual Studio实用插件
.NET开源的轻量化定时任务调度,支持临时的延时任务和重复循环任务(可持久化) - FreeScheduler
.NET多线程下解决资源竞争的7种方法