今天将介绍一款开源组件FluentMigrator,其提供了jQuery式链式编程方式,和3.0后的表达式语法使其语义清晰。主要提供我们队数据库结构的维护,版本控制回滚和新增。适用于 敏捷和TDD实践中我们的需求功能的递增,数据结构增加,可持续化集成,应用场景感觉如其名Fluent(流畅)。
一:我们先利用NuGet安装FluentMigrator:
1:在vs在打开Package Manager Console:
2:安装FluentMigrator:
3:如果你希望控制台提交,可以安装其tools:
二:下面我面做一个简单的实例订单Order(这里仅列出其部分字段,不会考虑实际业务):
DO:
using System;
namespace FluentMigratorTest
{
public class Orders
{
public int ID { get; set; }
public string CustomerID { get; set; }
public decimal DisCount { get; set; }
public DateTime OrderDate { get; set; }
}
}
namespace FluentMigratorTest
{
public class Orders
{
public int ID { get; set; }
public string CustomerID { get; set; }
public decimal DisCount { get; set; }
public DateTime OrderDate { get; set; }
}
}
表结构块:
using System.Collections.Generic;
using System.Linq;
using System.Text;
using FluentMigrator;
namespace FluentMigratorTest
{
[Migration( 0)]
public class OrderMigration:Migration
{
public override void Up()
{
Create.Table( " Orders_test ")
.WithColumn( " ID ").AsInt32().Identity().PrimaryKey( " id_pk ").Indexed( " Orders_Pk_ID ")
.WithColumn( " CustomerID ").AsString().ForeignKey( " Customers ", " CustomerID ").NotNullable()
.WithColumn( " DisCount ").AsDecimal().WithDefaultValue( 0)
.WithColumn( " OrderDate ").AsDateTime().WithDefault(SystemMethods.CurrentDateTime);
}
public override void Down()
{
Delete.Table( " Orders_test ");
}
}
}
using System.Linq;
using System.Text;
using FluentMigrator;
namespace FluentMigratorTest
{
[Migration( 0)]
public class OrderMigration:Migration
{
public override void Up()
{
Create.Table( " Orders_test ")
.WithColumn( " ID ").AsInt32().Identity().PrimaryKey( " id_pk ").Indexed( " Orders_Pk_ID ")
.WithColumn( " CustomerID ").AsString().ForeignKey( " Customers ", " CustomerID ").NotNullable()
.WithColumn( " DisCount ").AsDecimal().WithDefaultValue( 0)
.WithColumn( " OrderDate ").AsDateTime().WithDefault(SystemMethods.CurrentDateTime);
}
public override void Down()
{
Delete.Table( " Orders_test ");
}
}
}
其提供了Up版本递增和Down回滚。语法是不是很流畅?其不仅这些功能还提供了:
对表结构的新增,修改,删除,执行sql方法。
利用其提供的tools,更新在数据库
支持数据库:
并支持Profile,部署开发和测试不通的数据库。
本文转自破狼博客园博客,原文链接:http://www.cnblogs.com/whitewolf/archive/2012/05/27/2520422.html,如需转载请自行联系原作者