2009-08-29 110 views
35

我希望聽到別人對他們是否會選擇的意見(請不要'不要'過慮'),以及爲什麼。NHibernate或流利的NHibernate?

使用流利的缺點是什麼? (版本依賴可能?) 優點,缺點,經驗等

+1

hbm.xml文件在NHibernate中用於映射,但流利的NHibernate用C#代碼替換它。很容易發現問題和維護。 – 2012-11-29 13:40:20

+3

3年前我問過這個問題,這個月它會關閉嗎?呵呵。 – UpTheCreek 2012-11-29 14:19:25

回答

52

流利NHIbernate坐在NHibernate的頂部,所以它不是真正的兩個選擇之間。如果你打算使用NHibernate,CHOOSE在它上面使用Fluent NH來節省你大量的工作量。

功能NHibernate是真棒,沒有它,我不會使用NHibernate的。您可以流利地映射所有實體(爲您提供編譯時間檢查和自動化測試支持),而不必維護繁瑣的xml文件並記住它們的語法/ DTD。

它還可以自動在您的實體基於默認和/或自己的自定義映射約定。

只要使用它!

+0

是的,抱歉,我應該稍微區別一下我的問題;)謝謝你的回答。 – UpTheCreek 2009-08-29 09:50:40

+0

是的,我不能同意更多。我們使用了Fluent和Rhino以及Geo庫。我們偶爾遇到版本差異! – Perhentian 2009-10-20 10:43:30

+0

我第二。我剛開始使用流利NHibernate,我不(不會)回頭。映射你的課程是多麼容易,真是太神奇了。 – Siewers 2010-04-28 06:44:58

9

使用功能NHibernate與NHibernate一起的好處是,你得到編譯時錯誤,如果你已經搞砸了你的映射,而不是運行時錯誤。在重構代碼時,您還可以獲得更好的體驗,因爲在重命名屬性或其他內容時,映射會保持最新狀態,而不必記住手動修改XML映射文件。

功能NHibernate的最大缺點是,它仍處於發展的相當早階段,有相當重大更改爲框架的發展進步的一大隱患。

+1

根據我的經驗,由於我遇到的使用FluentNHibernate的映射錯誤導致的大部分錯誤都是在運行時發生的,因爲NHibernate首次在應用程序中使用。只有簡單的重構/類型不匹配/ mispellings /等。會導致編譯時錯誤。 – 2010-02-25 21:44:28

4

個人而言,我還沒有真正得到多少進入功能NHibernate,因爲我舒服的映射文件。使用visual studio創建映射文件是一件輕而易舉的事情,您可以爲xml文件設置架構,從而爲映射文件提供智能感知。我同意編譯時語法檢查對於使用fluent-nhibernate是一個優勢,但是當我已經熟悉XML映射時,我很努力學習流利的API。也許我應該只得到了我的lethergy並且已經學習它... :-)

12

我肯定會說去用流利的-NHibernate的。請注意,它可能不一定像您希望的那樣順利。

  1. 關於版本依賴

    1. 升級到FNH的新版本時,我有一個「反向」的依賴問題,要求我升級到NH的新版本(2.0到2.1,我認爲) 。這對我來說不是一個主要問題。
    2. 我剛剛(今天早上)將NH 2.1.1放入FNH 1.0 RTM(這是2.1.0發行版),沒有任何戲劇(還)。
  2. 編輯:既然寫這篇文章,我不認爲這是一個真正的問題了 映射支持FNH大幅成熟到 - 些映射是沒有可能的功能NHibernate。然而,這並不是避免FNH的原因,因爲混合的fluent-xml映射允許您在流暢無法映射的情況下對傳統xml進行回退(儘管這隻針對每個類的粒度)。映射的例子:

    1. 仍然不能映射領域 - http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/a7787927dafd23a/84ce2616946a18d7
    2. 不能字典http://groups.google.com/group/fluent-nhibernate/browse_thread/thread/d38b6c72250cd2fb的一些次地圖 - 其實從我收集這個功能存在,但不是主線呢。
  3. 複合複雜因子。從它的聲音,你將同時學習FNH和NH。對於大多數相當簡單的應用程序來說,這很好 - 事實上FNH通常非常好,所以您需要對hbm.xml映射知之甚少。但是如果你想要去做一些相當複雜的事情,那麼它第一次很少會工作,而且你還想知道它是PEBKAC,流利還是NH問題。比我希望的更多的是,我最終編寫了傳統的xml映射(當然,無論如何你都這樣做了,但最好不要花費比先行流利的更多的努力)。

+0

感謝你的想法 - 我在第3點聽到你的意見。最後我和FNH一起去了,但我也在做一個小項目,非常流利 - 這真是個好主意,因爲我覺得我學到了很多東西關於NH,並且實際上知道發生了什麼感覺更舒服。 (順便說一句,我必須查看PEBKAC,但是 - 這是我的大部分問題源於其中) – UpTheCreek 2009-11-13 11:28:41

+3

只是FYI,現在支持最新版本的字段。 – 2010-05-17 14:51:17

+0

您可以始終從流暢的映射中生成hbm.xml並手動編輯它們。不需要手寫全部 – Firo 2012-11-08 06:40:29

2

功能NHibernate是真的結束了NHibernate的一個很好的包裝。管理Fluent中的映射比xml映射更好。隨着您對Fluent的發展變得越來越快...

如果您使用Entity Developer創建實體和數據庫模式,那麼最好。