2012-08-02 91 views
0

我正在调查使用FluentNHibernate作为我的ORM,但我想知道如何最好地编写数据库部署部分。我有实体框架和代码优先迁移的经验,但我对FluentNHibernate很好奇,所以我在玩耍。我看过FunnelWeb Blog,但我还没有时间,但要真正了解他们是如何做的,所以我在项目的一个非常具体的部分得到了一些帮助,我希望有人可以总结。FluentNHibernate数据库部署

我的Visual Studio解决方案在以下组件(我会考虑使用一个IoC像Autofac,但以后还会来)分离:

Solution 
    Domain Assembly 
     DatabaseDeployment Namespace 
     Model Namespace 
    Web UI 

所以,在我的域名组装我想听听一个DBMigrator类谁的合同将是这个样子:现在

public interface IDBMigrator 
{ 
    bool NeedsUpdating(); 
    void UpdateDatabase(); 
} 

,在我的Web用户界面组件(这是一个MVC3项目),我想这样做以下(在Global.asax ):

protected void Application_Start() 
{ 
    AreaRegistration.RegisterAllAreas(); 

    RegisterGlobalFilters(GlobalFilters.Filters); 
    RegisterRoutes(RouteTable.Routes); 

    var migrator = new DBMigrator(); 
    if (migrator.NeedsUpdating()) 
    { 
     migrator.UpdateDatabase(); 
    } 
} 

此迁移程序将使用.sql脚本(因此我可以让我的数据库版本由Subversion控制),并且可能在数据库中有一个表,告诉我哪些脚本已针对该模式执行,以及哪些脚本没有“还没有。所以,总结一下,我想我的实际问题是:

  1. 我在正确的轨道上版本控制(和自动化)我的数据库部署?
  2. 我应该在什么时候检查(并应用)模式更改到我的项目,如果这真的是自动化或开发人员的煽动?

我在看一些框架现在如DbUpMigratorDotNet,但我希望得到我的策略吧在我的脑海第一,在我走之前,采取此一框架。你如何处理你的数据库迁移?

回答

0

我找不到那个做了什么,我想要一个特定的工具,所以做了我自己在我的问题的约定以下。如果任何人遇到这一点,并希望使用它,他们可以从这里抓住它:

NuGet Package Manager link

User Guide

+0

链路断开。 – increddibelly 2013-10-17 18:05:00

+0

@increddibelly感谢这一点,我正在编写自己的博客应用程序 - 我已经更新了工作链接。 – 2013-10-28 15:38:48