fluentmigrator连接mysql_使用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

64556919cd594d8fcc4cf0ca86d6b80b.png

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

[Migration(201811091800)]public classCreateTopicTable_201811091800 : Migration

{public override voidUp()

{

Create.Table("Topic")

.WithColumn("Id").AsInt64().PrimaryKey().Identity()

.WithColumn("TopicTitle").AsString(50);

}public override voidDown()

{

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"

a21e16ab20d39e31309357e427a313ce.png

执行成功

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

a4205c5b12e2da25602aad82a38cfa51.png

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

0ac587b8541b9c7b98b510e094efdac6.png

回滚数据库

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

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用法如图

77f0d0eeee23256b2a300851d1b1163b.png

4b5c4db6e826ab91edf72d44e8112d7d.png

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

总结

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

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

4ac7a3fb3a5da637a296bcc49511b13f.png

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

d7e7b624ae3c879a0ffd6fb8cf4d8e01.png

参考:

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

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值