.NET Migration工具

Migration是一种分布环境下的数据库同步工具,出现在Ruby on Rail框架里,MigratorDotNet是一个.NET类似于Ruby on Rail的Migrations的数据库版本系统。支持的数据库有MySQL (5.0, 5.1) ,PostgreSQL ,SQLite ,SQL Server (2000, 2005),Oracle (没有经过很好测试),可以通过NantTask,MSBuildTarget, Console Application三种方式来使用。

Migrations的类是Migration的子类,Migration主要有两个方法:Up方法定义这个版本该做什么,Down定义怎么回滚版本.

每一个Migration都应该是数据库中一个非常小的增量修改,常用的尺寸是创建一个表和给表增加一个字段或者多个字段,修改表的数据和对表执行一个ExecuteQuery自定义查询。保持Migration的尽量小,这样方便在版本之间的迁移,就在版本控制系统SVN,TFS那样,Migration的例子是这样的:

// Version 1
[Migration(1)]
public class CreateUserTable : Migration
{
public void Up()
{
Database.CreateTable("User",
new Column("UserId", DBType.Int32, ColumnProperties.PrimaryKeyWithIdentity),
new Column("Username", DBType.AnsiString, 25)
);
}
public void Down()
{
Database.RemoveTable("User");
}
}

Migration属性使用一个整数来表示,代表当前的数据库版本,工具就是通过这个属性来决定数据库之间的迁移。你如果使用控制台程序,版本号作为参数传给控制台程序,当然你也可以使用NAnt脚本或者MSBuild脚本。

下面是一段NAnt编译脚本:

<?xml version="1.0" ?>

<project default="migrate">

         <property name="project.dir" value="."/>

         <property name="output.dir" value="${project.dir}\Output" />

   <loadtasks assembly="${project.dir}\lib\migrator\Migrator.NAnt.dll" />

         <target name="clean" description="Deletes the previously built directories">

                 <delete dir="${output.dir}" failonerror="false" />

         </target>

         <target name="build" description="Builds Migration Project" depends="clean">

                 <msbuild project="${project.dir}\src\Migrations.Project\Migrations.Project.csproj">

                         <property name="Configuration" value="Debug" />

                         <property name="OutDir" value="${output.dir}\\" />

                 </msbuild>

         </target>

         <!-- Database Migrations task -->

   <target name="migrate" description="Migrate the database" depends="build">

     <!-- Using a version of -1 will cause the migration to migrate to the latest version -->

     <property name="version" value="-1" overwrite="false" />

     <migrate

       provider="MySql"

       connectionstring="Database=mydb;Data Source=localhost;User Id=mysqluser;Password=mysqlpassword;"

       migrations="${output.dir}\Migrations.Project.dll"

       to="${version}" />

   </target>

</project>

本文来自合作伙伴“doNET跨平台”,了解相关信息可以关注“opendotnet”微信公众号

时间: 2024-10-30 23:37:42

.NET Migration工具的相关文章

Sequelize 和 MySQL 对照

如果你觉得Sequelize的文档有点多.杂,不方便看,可以看看这篇. 在使用NodeJS来关系型操作数据库时,为了方便,通常都会选择一个合适的ORM(Object Relationship Model)框架.毕竟直接操作SQL比较繁琐,通过ORM框架,我们可以使用面向对象的方式来操作表.NodeJS社区有很多的ORM框架,我比较喜欢Sequelize,它功能丰富,可以非常方便的进行连表查询. 这篇文章我们就来看看,Sequelize是如何在SQL之上进行抽象.封装,从而提高开发效率的. 安装

如何将应用程序更轻松地迁移到WebSphere Application Server

Donald Vines & Andy Hoyt: Application Migration 工具如何将应用程序更轻松地迁移到 WebSphere Application Server 使应用程序分析和迁移更轻松 IBM WebSphere Application Server Migration Toolkit 的 Application Migration 工具能帮助您轻松地将应用程序从一个源应用服务器迁移到 WebSphere Application Server V7.0 上.源应用服

iOS面试必看,最全梳理

原文 序言 目前形势,参加到iOS队伍的人是越来越多,甚至已经到供过于求了.今年,找过工作人可能会更深刻地体会到今年的就业形势不容乐观,加之,培训机构一火车地向用人单位输送iOS开发人员,打破了生态圈的动态平衡.矫情一下,言归正传,我奉献一下,为iOS应聘者梳理一下面试题,希望能助一臂之力! OC的理解与特性 OC作为一门面向对象的语言,自然具有面向对象的语言特性:封装.继承.多态.它既具有静态语言的特性(如C++),又有动态语言的效率(动态绑定.动态加载等).总体来讲,OC确实是一门不错的编程

FirstDay@JavaOne2017

[本次JavaOne的主要技术方向] Ecosystem 个人认为Java取得今天的成功,是因为有一个完整的生态系统.不管是持捐款的IBM,还是非商业性的User Group.而第一天的主题也是Community Day,除了一些工具和主题技术的介绍外,还有很多议题是这个Community的文化分享交流,比如有的议题就是How to build a successful Java User Group. Core Java&Related Java9介绍及Feature List JavaEE8

图样图森破 设置虚拟机优先级真的很容易?

尽管可以将Hyper-V虚拟机配置为高可用,但虚拟机能否从一台主机服务器切换到另一台主机完全取决于硬件资源的可用性.毕竟,每台虚拟机都需要存储.CPU.内存以及其他资源.如果目标主机缺少必需的资源,那么虚拟机将无法启动. 微软通过建立虚拟机故障切换优先级帮助管理员解决上述问题.实际上,管理员可以告诉Hyper-V哪些虚拟机是最重要的,在故障切换场景中具有优先权,获得所需资源的机会最大. 使用SCVMM设置虚拟机优先级 微软通过SCVMM简化了虚拟机优先级设置.只需要进入SCVMM管理员的虚拟机与

使用Opatch工具应用过渡性Patch

Last Updated: Saturday, 2004-12-04 10:04 Eygle         很多时候,在推出一个完整的补丁集之前,Oracle会依据Bug的严重程度发布一些过渡性或临时性Patch,修正一些Bug.这些Patch通常没有setup安装程序,需要使用Oracle的opatch工具安装,本文就opatch的使用进行示范说明. 1.下载 Opatch的最新版本可以从Metalink下载,参考 Note:224346.1 2.使用 在NT/UNIX,Opatch都需要p

Oracle系统实用工具介绍

1.应用开发(Application Development) SQL*Plus E:\Oracle\Ora81\BIN\SQLPLUSW.EXE 2.数据库管理(Database Administration) Database Configuration Assistant 数据库配置助手:创建.配置.删除数据库 DBA Studio 将多个数据库工具并入一个应用程序中.DBA Studio 管理以下对象: 例 程:包括启动.关闭和例程化例程. 方 案:包括表.索引和 Oracle8对象.

使用文件服务器移植工具减少共享文件夹移植的麻烦

由于很多管理员都经历过从早期的Windows服务器操作系统版本(如,Windows NT 4.0和Windows 2000)到Windows 2003 Server的更新,所以,他们中的多数人都遇到过迁移困难问题以及将来自一个或多个旧的服务器平台中的共享文件夹合并的问题.这些问题中的一部分是由于规范和技术的改变而造成的.管理员希望能够把旧的以通用命名规则(Universal Naming Convention,简称UNC)来命名的网络路径移植到新的分布式文件系统(Distributed File

Share Point开发系列之三:开发工具和流程

本篇文章包括: 1: 使用开发和设置工具 2: 使用集成和测试工具 3: 使用设计和定制化工具 4: 使用Solution 包和部署工具 5: 使用Content Authoring和部署工具 Office SharePoint Server 2007 网站的设计和开发, 需要一系列的流程, 包括使用很多工具, 不同 的开发环境, 设计和开发小组: 软件开发 软件配置管理 集成和测试 Web 页面和网站的设计和定制化 Solution Packaging 和部署 Content authorin