NHibernate和数据库更改/部署

Gar*_*ans 3 sql deployment nhibernate fluent-nhibernate

我正在考虑将NHibernate和Fluent NHibernate用于我的下一个项目,但有一件事我想事先清理一下,你是如何管理对数据库的更改的呢?

例如,我有NH + FNH工作,部署应用程序和上线,但我们做的开发环境的改变,例如说我们添加一个新的属性,这是使用NH/FNH映射一个实体.

如何在不丢弃表的情况下将该更改应用于数据库?

谢谢GE

Sor*_*raz 9

我有很好的使用这个框架的经验:

http://code.google.com/p/migratordotnet/

基本上,您为每个数据库更改创建一个类,并使用时间戳注释该类.然后以时间戳顺序应用最终装配.

这意味着在开发期间,每次结账后都可以轻松地执行db升级过程,并且知道您与世界同步.

using Migrator.Framework;
using System.Data;

namespace DBMigration
{
    [Migration(20080401110402)]
    public class CreateUserTable_001 : 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");
            }
    }
Run Code Online (Sandbox Code Playgroud)