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

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

时间:2023-09-06 15:33:34浏览次数:48  
标签:Evolve evolve 数据库 管理工具 版本 NET dbPaths

原帖 :.NET Evolve 数据库版本管理工具 - 宣君 - 博客园 (cnblogs.com)

 

.NET Evolve 数据库版本管理工具 Evolve即.NET领域的Flyway

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

 


标签:Evolve,evolve,数据库,管理工具,版本,NET,dbPaths
From: https://www.cnblogs.com/Andy-Blog/p/17682440.html

相关文章

  • .NET 序列化生成 JavaScriptSerializer Poc
    dot.NET安全矩阵星球群有位师傅问起如何才能生成和ysoserial一样的JavaScriptSerializer序列化poc,同Json.NET一样序列化使用了ObjectDataProvider类,ObjectInstance属性绑定实例化的Process对象,这里没有使用MethodParameters属性传递参数,而是使用ProcessStartInfo类FileName和Argum......
  • 另一个开源数据库管理工具HeidiSQL的使用及注意事项(轻量级替代navicate)
    1.此工具支持的数据库类型比较有限,主要有 MariaDB,MySQL,MicrosoftSQL,PostgreSQLandSQLite2.此工具占用资源较少,运行速度较快,当然缺点是功能也相对较少,但基本的建表查询等功能都有.3.可以与DBeaver进行互补,结合使用,比如其导出数据功能比DBeaver好用;创建表字段和......
  • VMware Tanzu Kubernetes Grid (TKG) 2.3 - 企业级 Kubernetes 解决方案
    VMwareTanzuKubernetesGrid(TKG)2.3-企业级Kubernetes解决方案VMware构建、签名和支持的开源Kubernetes容器编排平台的完整分发版请访问原文链接:https://sysin.org/blog/vmware-tkg-2/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgTanzuKubernetes集......
  • .NET6.0实现IOC容器
    .NET6.0实现IOC容器IOC的作用这里省略…只对如何使用进行说明。1.创建一个.NET6应用程序这里使用.NET6.0WebAPI应用2.声明接口publicinterfaceIAuthService{boolCheckToken();}3.实现接口classAuthServiceImpl:IAuthService{publi......
  • Java Socket IO流关闭问题: Exception in thread "main" java.net.SocketException: S
    先说结论问题:明明执行的语句在socket.close前,却出现Exceptioninthread"main"java.net.SocketException:Socketisclosed报错结论:在Java中关闭一个包装流会导致它的底层流也被关闭所以一般使用socket.shutdownOutput()或socket.shutdownInput()关闭对应的流问题复现......
  • ASP.NET
    筛选器Filters:在处理请求和生成响应的过程中插入逻辑AuthorizationFilters(授权筛选器)[Authorize]用于限制只有经过身份验证的用户才能访问某个动作或控制器。[Authorize]publicclassProtectedController:Controller{ publicIActionResultIndex() {   ......
  • dotnet6 C# 一个国内还能用的 NTP 时间校准客户端的实现
    本文来记录一个我自己在使用的NTP时间校准客户端的实现核心方法是在国内使用腾讯和阿里提供的NTP时间服务器来获取网络时间,如果连接不上,再依次换成国家服务器和中国授时服务,如果再连不上,那就换成微软自带的time.windows.com服务从NTP服务上获取当前的网络时间,可......
  • 使用ASP.NET实现Model View Presenter(MVP)
    作者:BillyMcCafferty翻译:张善友原文地址:http://www.codeproject.com/useritems/ModelViewPresenter.asp这篇文章描述了ASP.NET2.0使用Model-View-Presenter模式实现业务逻辑与表现层的适当分离。DownloadtrivialexampleofMVP-18KbDownloadsimpleEvent-HandlingMVP-......
  • dotnet 将任意时区的 DateTimeOffset 转换为中国时区时间文本
    本文告诉大家在拿到任意时区的DateTimeOffset对象,将DateTimeOffset转换为使用中国的+8时区表示的时间在开始之前,需要说明的是,采用DateTimeOffset会比DateTime更优的一个点是DateTimeOffset是带上时区的,这就意味着方便的在多个不同的时区进行传递和序列化的时候,不会丢......
  • dotnet 将控制台 Console
    很多伙伴喜欢使用Console.WriteLine打日志,也许是打起来顺手。打完了之后,又想着,要是能够输出到本机文件那就更好了。既然很多伙伴都有这个想法,那dotnet自然就是有方便的方法让咱来实现此需求。只需要调用Console.SetOut方法,即可将控制台的输出重定向到一个TextWriter里面,只......