2008-09-16 58 views

回答

18

不,你不是瘋了。 nHibernate是一個完整的OR映射器,Linq to SQL和Linq to Entities並沒有實現你期望從OR映射器得到的所有東西,並且針對一個稍微不同的開發者羣體。

但是,不要讓你失去linq,雖然。 LINQ仍然是一個不錯的主意..嘗試的LINQ to NHibernate的:-)

6

偏大的弊端,NHibernate的,城堡等,是他們不完全輕量(尤其是NHibernate的。)

Linq to SQL適用於重量輕,使用有限的ORM。

+0

準確。它們比許多重量級的ORM工具慢得多。 – 2009-11-09 12:41:50

4

有一點需要記住的是,NHibernate可以是一個絕對的豬配置 - 尤其是因爲它的基礎主要是XML配置文件,因爲它的根源是原始的Hibernate。

Fluent NHibernate通過某種方式使這種痛苦減輕。

Linq當然符合.NET工作的一般「方式」。

6

我已經使用了NHibernate和LINQ to SQL。從我的角度來看,這取決於項目,如果我需要快速一點,我會選擇L2S,創建dbml映射並開始使用它非常簡單。如果我正在開發更高級的企業解決方案,我會選擇經過驗證的可信ORM - NHibernate,我發現日誌記錄&事務功能使用起來很簡單。

LINQ to SQL有一個相對較短的學習曲線,NHibernate有一個更陡峭的學習曲線。

LINQ to SQL只支持SQL Server,所以如果你有一個Oracle數據庫,那麼就已經做出了決定--NHibernate。

我建議查看http://www.summerofnhibernate.com/以瞭解有關學習NHibernate的優秀截屏視頻。

1

我還沒有嘗試實體框架,但我肯定會推薦NHibernate的Linq to SQL;我能給的最大理由就是控制。 Linq to SQL喜歡對所有事情有更多的控制權,加載對象並且維護關於對象的各種跟蹤信息。如果序列化/反序列化,跟蹤信息可能會丟失,再次保存時會發生奇怪的事情。 NHibernate的工作原理更像一個倉庫 - 無論您想要什麼對象(當然,您已將其配置爲理解),它都會將其傳遞到數據庫中,無論您使用何種對象。

4

塊引用LINQ的肯定,雖然與一般的「方式」在.NET工作

讓人驚訝的配合,這種感情讓我害怕。內置在.net中的RAD東西並不是dot net的工作原理,它只是一個用於獲取原型的工具。 .NET允許我們執行完整的DDD應用程序,具有高水平的凝聚力,關注點的分離,並且允許我們編寫解耦代碼,儘管ms用於耦合事物的所有嘗試。我堅決不同意.net喜歡耦合,certian工具喜歡耦合,我將包括linq到SQL在這場爭鬥。 linq to sql破壞了擁有獨立域模型的想法。我擔心將我的數據庫模式用作底層模型對象。正確的ORM工具應該允許我們首先對我們的域進行建模,然後將我們的關係數據庫鏈接到這些模型。而不是相反。