2012-08-02 82 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