发布网友 发布时间:2022-04-23 07:18
共6个回答
懂视网 时间:2022-04-10 18:36
在开发的过程中,经常会遇到数据库结构变动(表新增、删除,表列新增、修改、删除等)。开发环境、测试环境、正式环境都要记性同步;如果你使用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)安装之后会出现在packagesFluentMigrator.Console.3.1.3中
打开cmd运行以下命令:
packagesFluentMigrator.Console.3.1.3 et461anyMigrate.exe /conn "Data Source=.;Initial Catalog=migrationDemo;Persist Security Info=True;User ID=sa;Password=123;"/db sqlserver2014 /assembly "DatabaseMigrationinDebugDatabaseMigration.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 "DatabaseMigrationinDebugDatabaseMigration.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
使用FluentMigrator进行数据库迁移
标签:BMI name override OLE entity des 管理 改变 升级
热心网友 时间:2022-04-10 15:44
have a cold 和 have a flu的区别为:
一、指代不同
1、have a cold:感冒了。
2、have a flu:得流感了。
二、侧重点不同
1、have a cold:这说的是一种着凉感冒,也就是一种小感冒。
2、have a flu:这说的是一种病毒性的流行*冒。
三、用法不同
1、have a cold:cold作名词时有指相对于身体的温度来说,温度较低,使人感到冷,即“冷,寒冷”,由于天气寒冷而引起的“伤风,感冒”。
2、have a flu:flu是influenza的缩写,常与定冠词the连用,但在英式英语中也常省略the。
热心网友 时间:2022-04-10 17:02
have a cold 和 have a flu热心网友 时间:2022-04-10 18:37
不一洋热心网友 时间:2022-04-10 20:28
have a cold 和 have a flu的区别为:热心网友 时间:2022-04-10 22:36
cold是(普通)感冒,flu是流感