我正在構建一個3層wpf應用程序。 我聽說nhibernate最適合web應用程序。我應該使用NHibernate嗎?
我知道如何使用nhibernate。
我應該用還是不用?
有沒有推薦的或者更適合的mapper?
我正在構建一個3層wpf應用程序。 我聽說nhibernate最適合web應用程序。我應該使用NHibernate嗎?
我知道如何使用nhibernate。
我應該用還是不用?
有沒有推薦的或者更適合的mapper?
NHibernate與Fluent NHibernate似乎是一個非常好的ORM組合,Fluent真的擺脫了繁瑣的XML配置的東西。
我不會冒昧地說,它是最好的解決方案或不是,但其他幾個ORM需要你維護外部配置文件,這些文件真的會破壞重構等有用的東西。
也就是說,它是否適用於WPF應用程序和Web應用程序:通常,Web應用程序比Windows客戶端具有更受限制的過程模型。所以如果NHibernate適合web應用程序,那麼它應該比Windows客戶端更適合。它們是有狀態的,可以訪問更多的內存和CPU的能力。更重要的是,如果您要構建一個3層應用程序,即數據訪問和業務邏輯在服務器上運行,也許您可以通過僅作爲Web應用程序的另一種形式的Web服務訪問這些層。
也許如果你能詳細說明你所聽到的關於NHibernate只適用於web應用程序,我們可以瞭解更多。
你當然可以使用它,但你必須非常小心你如何管理你的會話(做不保持一個會話打開的應用程序的持續時間),特別是和,如何使用延遲初始化(確保你查看分離的對象,否則你可能會發現自己面臨LazyInitializationException,並且沒有明顯的方法來修復它)。
如果你沒有花時間理解它的工作原理,那麼你可以用NHibernate來解決問題是公平的。也就是說,學習曲線開始非常淺,但對於一些高級功能來說,其學習曲線相當顯着。
我建議考慮看看:
當然,如果你只是在做基本的ORM操作,那麼看看ActiveRecord。它建立在NHiberate之上,但不需要任何映射要求 - 只需用屬性裝飾對象即可。
功能NHibernate自動映射這些異常不一樣的... 我有一些經驗NHibernate的,我只是想知道爲什麼它recomended僅用於Web appz – 2009-04-14 08:26:17
這聽起來像你知道你我正在談論。如果你有能力,請你詳細說明你的陳述 - *「..如果你沒有花時間瞭解它的工作原理,你可能會遇到NHibernate的麻煩。」* – 2009-11-23 16:29:15
NHibernate不綁定到任何特定的環境。您可以像使用Web應用程序一樣輕鬆地將它用於WinForms/WPF應用程序。只需要注意會話管理,但不管環境如何,您都應該這樣做。
如果以這種方式提出問題,答案是不要使用它(和任何其他ORM一樣)。 NHibernate在起源之後幾步,甚至這不是一個問題。主要問題是ORMs原則上無法解決阻抗失配問題。它可能會讓你的生活更輕鬆,但這取決於你的項目(我不認爲這是事實)。
我最好專注於經典的客戶端/服務器方案,以便更好地理解事物的工作方式。在開始使用任何ORM之前,您需要知道(至少)C/S體系結構的限制。
我同意你的原則,但我我不確定阻抗不匹配是否真的經常出現以至於不能真正關心。 – 2009-04-16 15:46:21
開始設計您的應用程序而不知道您將用於數據持久性的解決方案。它將堅如磐石。
是是的,當然我面對過去 – 2009-04-14 08:27:39