26

我來自我的ORM工具的實體框架和LLBL背景。FluentNHibernate和NHibernate的「按代碼映射」之間的區別

我被要求建立一個基於NHibernate的新系統。我從來沒有這樣做過,所以我用新鮮的眼光來看待它。

在NHibernate中映射與Fluent NHibernate和「通過代碼映射」有什麼區別?有偏好嗎?

+2

這不是太有建設性我相信。你爲什麼不學習NH,並親自看看有什麼不同? **順便說一下,我在學習java並且擁有C#背景,有什麼區別? ... ** – gdoron

+2

我相信他指的是具體的映射。 +1來抵消downvote並編輯問題更加清晰。 – Origin

+4

我可以看到這將如何混淆到新來者,但像@Origin在他的回答中所述,以及在他的回答中暗示了什麼dotjoe,與項目年齡相比,「按代碼映射」功能相對較新。對於一個新手來說,我建議僅僅使用NHibernate中內置的新的「按代碼映射」。我自己會繼續堅持使用Fluent NHibenate,因爲我有很多目前使用它的代碼,而且它的語法對我個人來說更有意義。 –

回答

19

Fluent NH

功能NHibernate提供了NHibernate的標準XML 映射文件的替代品。您不用編寫XML文檔,而是使用強類型的C#代碼編寫映射 。這允許輕鬆重構,提高了可讀性和更簡潔的代碼。

NH's new mapping by code

它是一個XML少映射解決方案是自3.2 NHibernate的不可分割的一部分,是根據符合庫。其API嘗試 符合XML命名和結構。在 中有一個強大的約定如何構建映射方法。其名稱幾乎總是等於 到XML元素名稱。

10

其中一些是首選項,其中一些是現有的代碼庫。有一段時間,NHibernate沒有任何內置的非XML映射選項。有幾個解決方案可以解決這個問題 - 例如conform,Fluent NHibernate和其他我可能不知道的。

從3.2我相信(也許3.0)NHibernate現在有「映射的代碼」。與Fluent NHibernate相比,這樣做的好處是它不需要額外的庫,並且由NHibernate支持。另一方面,Fluent NHibernate更成熟一些(從我聽說的),並且可以支持更廣泛的映射函數。

我還提到了「現有的代碼庫」。很明顯,如果你有一個已經與Fluent NHibernate映射的項目,最好繼續使用它。如果你開始新鮮,也許值得嘗試使用內置的「按代碼映射」