使用FluentMigrator进行数据库迁移

介绍

在开发的过程中,经常会遇到数据库结构变动(表新增、删除,表列新增、修改、删除等)。开发环境、测试环境、正式环境都要记性同步;如果你使用EF有自动迁移的功能,还是挺方便的。如果非EF我们需要手工处理,有时候会忘记,繁琐。恰好 网上有提供的工具来实现类似EF的迁移功能。如:SQL Server Data Tools、Fluent Migrator、RoundhousE、 DbUp、Conclusion;本文将着重分享下如何使用Fluent Migrator进行数据库迁移。

Fluent Migrator

Fluent Migrator是.NET下的一个数据库迁移框架。我们可以利用Migration基类,编写数据结构改变,它有两个方法Up()和Down()。up方法用于升级迁移,down用于回滚。

 如何使用Fluent Migrator

下面以创建一个论坛,帖子表为例。

创建一个迁移类库,命名为DatabaseMigration,在命令行中安装:Install-Package FluentMigrator

然后添加一个迁移类CreateTopicTable_201811091800.cs继承Migration,代码如下

 [Migration(201811091800)]
    public class CreateTopicTable_201811091800 : Migration
    {

        public override void Up()
        {
            Create.Table("Topic")
               .WithColumn("Id").AsInt64().PrimaryKey().Identity()
               .WithColumn("TopicTitle").AsString(50);
        }

        public override void Down()
        {
            Delete.Table("Topic");
        }
    }

我们创建了一个继承Migration类。实现了接口Up()和down()方法,在up方法了创建一个Topic表并且添加了两个字段,我们进行升级迁移时将会调用up方法;down方法里 我们可以进行回滚删除该表。[Migration(201811091800)] 这个是版本定义,数据库会自动创建一个表进行版本维护。FluentMigrator还提供其他的接口如:Alter,Create,Rename,Insert,Delete,Execute等。

运行迁移

执行迁移利用Migrate.exe工具,(Install-Package FluentMigrator.Console)安装之后会出现在packages\FluentMigrator.Console.3.1.3中

打开cmd运行以下命令:

packages\FluentMigrator.Console.3.1.3\net461\any\Migrate.exe /conn "Data Source=.;Initial Catalog=migrationDemo;Persist Security Info=True;User ID=sa;Password=123;"/db sqlserver2014 /assembly  "DatabaseMigration\bin\Debug\DatabaseMigration.dll"

执行成功

打开数据库我们会发现多了一张Version表

打开version表;你会发现表里面有一条迁移记录,version(版本号是可以自定义的),appliedon(执行时间),description(描述如果不自定义默认是类名称)

回滚数据库

业务的变更,经常会变动数据表或表结构,使用面命令很容易进行管理。

Migrate.exe /conn "Data Source=.;Initial Catalog=migrationDemo;Persist Security Info=True;User ID=sa;Password=lee2018;" /db sqlserver2014 /assembly "DatabaseMigration\bin\Debug\DatabaseMigration.dll" /task rollback --steps=1

你会发现 命令结尾处多了task rollback --steps=1 ;如果没有task  默认是指migrate up。 task用法如图

输出显示 CreateTopicTable_201811091800 reverted 恢复成功。此时实际上执行的是 Delete.Table("Topic");。

总结

使用 Fluent Migrator 很容易的去升级迁移和回滚数据库。最后分享下迁移助手小工具

截图如下:图1 可以直接执行命令

图2,如果在已有的数据表的情况下,利用自动创建免去了手工去编写迁移文件

最后附上源码地址https://github.com/ChengLab/DBMigrationTool

参考:

Ants-----https://www.cnblogs.com/ants/p/4037312.html

官网----https://fluentmigrator.github.io/index.html

原文地址:https://www.cnblogs.com/chengtian/p/9938756.html

时间: 2024-11-09 16:48:25

使用FluentMigrator进行数据库迁移的相关文章

数据库迁移 Migrator.Net

转载: [强烈推荐]数据库迁移利器:Migrator.Net Migrator.NET:https://github.com/migratordotnet/Migrator.NET fluentmigrator:https://github.com/schambers/fluentmigrator 了解EF CodeFirst的Migrator功能与Migrator.Net对比

wordpress博客站点配置及数据库迁移

1.wordpress博客站点部署配置 1.1 检查环境 1.1.1 nginx.conf配置文件 ###检查nginx配置文件 [[email protected] conf]# cat nginx.conf worker_processes 1; events { worker_connections  1024; } http { log_format  main  '$remote_addr - $remote_user [$time_local]"$request" ' '$

MVC VS2012 Code First 数据库迁移教程

1.在"服务资源管理器"连接数据库 2.打开工具-Nuget程序包管理器"程序包管理器控制台" 3.控制台输入命令:PM> Enable-Misgrations 4.以项目MvcGuestbook.Models.MvcGuestbookContext为例: PM> Enable-Misgrations-ContextTypeName MvcGuestbook.Models.MvcGuestbookContext 5.更新数据库:PM>Update-

Oracle数据库迁移的几种方式

面试: 一.exp/imp逻辑备份与恢复: 二.Storage存储迁移: 将数据文件.控制文件.日志文件.spfile挂到新机器上,然后在新机器上启动数据库. 三.利用data guard迁移: 四.用rman做迁移: 我们常常需要对数据进行迁移,迁移到更性能配置更高级的主机OS上.迁移到远程的机房.迁移到不同的平台下,以下介绍ORACLE的几种数据库迁移方案: 一.exp/imp逻辑备份与恢复:  它是最常用最简单的方法,一般是基于应用的owner级做导出导入.  操作方法为: 在新库建立好o

转 【TTS】AIX平台数据库迁移到Linux--基于RMAN(真实环境)

[TTS]AIX平台数据库迁移到Linux--基于RMAN(真实环境) http://www.cnblogs.com/lhrbest/articles/5186933.html 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 异构平台下传输表空间的实施 ② 传输表空间基于表空间的read only和rman2种方式 ③ 平台字节序.自包含概念 ④ expdp/impdp的应用 ⑤ 数据库迁移一般情况下应该收集哪些信息及相应的脚本

Entity Framework Code First数据库迁移(DB Migration)

一.手动迁移 第1步.启用数据库迁移 打开程序包管理器控制台 工具->库程序包管理器->程序包管理器控制台 打开控制台后,在控制台管理窗口输入 Enable-Migrations 指令,铵下回车键,到这里已启用了数据库迁移,但还没执行,结果如下图: 第2步.运行数据库迁移 在控制台管理窗口输入 Add-Migration指令,来新增一条数据库迁移版本,输入时必须要带上一个版本名称 Add-Migration AddProductCategoryTypeName,如下图: 运行完成后会在解决方案

sql server 2005 数据库迁移问题总结——"错误15023:当前数据库中已存在用户或角色"

在数据库迁移过程中,如何设置不好用户与登录,会造成"错误15023:当前数据库中已存在用户或角色". 现在整理下思路: 1.在原数据库进行数据库备份 ***.bak 文件: 2.在新建数据库,建立与原数据库相同的登录名: 3.在新数据库上恢复备份的数据库文件 ***.bak 文件:选择覆盖原数据库文件: 4.将数据库恢复到其他服务器时,需要处理"孤立用户"的问题.具体解决办法如下: 用户和权限,但可能没有相应的登录或者登录所关联的用户可能不是相同的用户.这种情况被称

EntityFramework CodeFirst 数据库迁移

参考: https://msdn.microsoft.com/en-us/data/jj591621 http://www.itnose.net/detail/6105449.html http://www.tuicool.com/articles/Q7JRR32 打开:工具 --> NuGet包管理器 --> 程序包管理控制台,按下面的步骤使用相应的命令 //使能迁移功能 命令1. Enable-Migrations -ContextTypeName WebTest.Models.TestD

使用 Code First 数据库迁移

当 Entity Framework Code First 的数据模型发生改变时,默认会引发一个System.InvalidOperationException 的异常.解决方法是使用DropCreateDatabaseAlways 或DropCreateDatabaseIfModelChanges,让Entity Framework 自动将数据库删除,然后重新创建.不过,这种方式过于残暴,应该使用更人性化的方式,让Entity Framework 帮助我们自动调整数据库架构.并且仍然保留现有数