开源DataBase组件:FluentMigrator
2012-05-27 19:09 破狼 阅读(5896) 评论(6) 编辑 收藏 举报今天将介绍一款开源组件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,部署开发和测试不通的数据库。
更多其它信息请参加:https://github.com/schambers/fluentmigrator/wiki
作者:破 狼
出处:http://www.cnblogs.com/whitewolf/
本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客、博客园--破狼和51CTO--破狼。