回答
流利NHIbernate坐在NHibernate的頂部,所以它不是真正的兩個選擇之間。如果你打算使用NHibernate,CHOOSE在它上面使用Fluent NH來節省你大量的工作量。
功能NHibernate是真棒,沒有它,我不會使用NHibernate的。您可以流利地映射所有實體(爲您提供編譯時間檢查和自動化測試支持),而不必維護繁瑣的xml文件並記住它們的語法/ DTD。
它還可以自動在您的實體基於默認和/或自己的自定義映射約定。
只要使用它!
是的,抱歉,我應該稍微區別一下我的問題;)謝謝你的回答。 – UpTheCreek 2009-08-29 09:50:40
是的,我不能同意更多。我們使用了Fluent和Rhino以及Geo庫。我們偶爾遇到版本差異! – Perhentian 2009-10-20 10:43:30
我第二。我剛開始使用流利NHibernate,我不(不會)回頭。映射你的課程是多麼容易,真是太神奇了。 – Siewers 2010-04-28 06:44:58
使用功能NHibernate與NHibernate一起的好處是,你得到編譯時錯誤,如果你已經搞砸了你的映射,而不是運行時錯誤。在重構代碼時,您還可以獲得更好的體驗,因爲在重命名屬性或其他內容時,映射會保持最新狀態,而不必記住手動修改XML映射文件。
功能NHibernate的最大缺點是,它仍處於發展的相當早階段,有相當重大更改爲框架的發展進步的一大隱患。
根據我的經驗,由於我遇到的使用FluentNHibernate的映射錯誤導致的大部分錯誤都是在運行時發生的,因爲NHibernate首次在應用程序中使用。只有簡單的重構/類型不匹配/ mispellings /等。會導致編譯時錯誤。 – 2010-02-25 21:44:28
個人而言,我還沒有真正得到多少進入功能NHibernate,因爲我舒服的映射文件。使用visual studio創建映射文件是一件輕而易舉的事情,您可以爲xml文件設置架構,從而爲映射文件提供智能感知。我同意編譯時語法檢查對於使用fluent-nhibernate是一個優勢,但是當我已經熟悉XML映射時,我很努力學習流利的API。也許我應該只得到了我的lethergy並且已經學習它... :-)
我肯定會說去用流利的-NHibernate的。請注意,它可能不一定像您希望的那樣順利。
關於版本依賴
- 升級到FNH的新版本時,我有一個「反向」的依賴問題,要求我升級到NH的新版本(2.0到2.1,我認爲) 。這對我來說不是一個主要問題。
- 我剛剛(今天早上)將NH 2.1.1放入FNH 1.0 RTM(這是2.1.0發行版),沒有任何戲劇(還)。
編輯:既然寫這篇文章,我不認爲這是一個真正的問題了
映射支持FNH大幅成熟到 - 些映射是沒有可能的功能NHibernate。然而,這並不是避免FNH的原因,因爲混合的fluent-xml映射允許您在流暢無法映射的情況下對傳統xml進行回退(儘管這隻針對每個類的粒度)。映射的例子:複合複雜因子。從它的聲音,你將同時學習FNH和NH。對於大多數相當簡單的應用程序來說,這很好 - 事實上FNH通常非常好,所以您需要對hbm.xml映射知之甚少。但是如果你想要去做一些相當複雜的事情,那麼它第一次很少會工作,而且你還想知道它是PEBKAC,流利還是NH問題。比我希望的更多的是,我最終編寫了傳統的xml映射(當然,無論如何你都這樣做了,但最好不要花費比先行流利的更多的努力)。
感謝你的想法 - 我在第3點聽到你的意見。最後我和FNH一起去了,但我也在做一個小項目,非常流利 - 這真是個好主意,因爲我覺得我學到了很多東西關於NH,並且實際上知道發生了什麼感覺更舒服。 (順便說一句,我必須查看PEBKAC,但是 - 這是我的大部分問題源於其中) – UpTheCreek 2009-11-13 11:28:41
只是FYI,現在支持最新版本的字段。 – 2010-05-17 14:51:17
您可以始終從流暢的映射中生成hbm.xml並手動編輯它們。不需要手寫全部 – Firo 2012-11-08 06:40:29
功能NHibernate是真的結束了NHibernate的一個很好的包裝。管理Fluent中的映射比xml映射更好。隨着您對Fluent的發展變得越來越快...
如果您使用Entity Developer創建實體和數據庫模式,那麼最好。
- 1. 流利的NHibernate與NHibernate 3.0
- 2. 流利Nhibernate和Nhibernate 2.1.0.1003
- 3. NHibernate /流利NHibernate映射
- 4. C#流利nhibernate
- 5. C#流利nhibernate
- 6. LLBLGEN - 流利NHibernate
- 7. 流利NHibernate的 - IndexOutOfRange
- 8. NHibernate /流利NHibernate的動態列映射
- 9. NHibernate的T4模板? - 不流利NHibernate
- 10. NHibernate +流利NHibernate的+甲骨文索引
- 11. 流利的NHibernate/NHibernate繼承問題
- 12. ValueObject在NHibernate /流利NHibernate的持久性
- 13. 流利Nhibernate映射
- 14. 從appSettings流利NHibernate
- 15. 流利NHibernate和log4net
- 16. 流利NHibernate入門
- 17. 流利NHibernate與SQLite
- 18. 流利NHibernate和DynamicUpdate
- 19. ManyToManyMapping與流利Nhibernate
- 20. 流利Nhibernate映射
- 21. 流利的NHibernate或NHibernate複雜的關係數據庫
- 22. 沒有Persister for ... {SUBCLASS} NHibernate與流利NHibernate
- 23. 在NHibernate 3.3中使用流利NHibernate 3.3
- 24. Cascade.SaveOrUpdate(SQLite的)流利,NHibernate的
- 25. 流利的nhibernate一對多
- 26. C++/CLI中流利的nhibernate
- 27. 一對一流利的nhibernate?
- 28. 流利,NHibernate的,並且PredicateBuilder
- 29. 流利的NHibernate映射
- 30. NHibernate的流利組由
hbm.xml文件在NHibernate中用於映射,但流利的NHibernate用C#代碼替換它。很容易發現問題和維護。 – 2012-11-29 13:40:20
3年前我問過這個問題,這個月它會關閉嗎?呵呵。 – UpTheCreek 2012-11-29 14:19:25