2009-11-22 53 views

回答

8

需要注意的是,Linq不僅僅是一個ORM工具。名稱二還有Linq-To-XMLLinq-To-Objects,但還有更多。 Linq是C#和VB的一組語言擴展,在處理對象集合時爲您提供語法糖。

至於你的主要問題,如果你有從表到域對象的一對一映射,Linq-to-SQL沒問題。 NHibernate進入它自己的地方是你有一個現有的複雜的域模型或現有的複雜的數據庫模式,你想在它們之間進行映射。

此外,它可以與Linq-To-NHibernate一起使用。

+1

所以linq只允許你從一個表中查詢? – 2009-11-22 18:23:46

+0

事實上,Linq並沒有什麼特別的與收藏 - 這是更一般的。請參閱http://stackoverflow.com/questions/1418106/how-much-is-there-to-linq/1418176#1418176 – Dario 2009-11-22 18:27:52

+0

否,因爲您可以將對象集合與join關鍵字一起使用。 Linq-To-Sql框架然後會生成將被髮送到服務器的sql連接。 – 2009-11-22 18:28:03

-1

我不喜歡linq-to-sql(因爲這就是你的意思),因爲你必須設計一個數據庫模式。有了休眠(儘管我使用了一個名爲XPO的類似產品),您只需製作對象並在框架中處理關係(一對一,多對一,M到M)。

這是linq to sql的一大缺點。所以不,他們不是相互排斥的。

+0

我不明白。我沒有使用hibernate,但我知道linqtosql會自動從數據庫模式中推斷關係。您不必手動設置它們。 – recursive 2009-11-22 18:10:22

+0

使用Hibernate也不能跳過設計數據庫的步驟。 Hibernate和Linq只是查詢現有的數據庫(可能通過使用數據庫模式)......但它們不會爲您創建模式。 – 2009-11-22 18:24:25

2

Linq更關注如何統一查詢數據庫,XML,對象或任何自定義數據存儲的方式。 Hibernate僅用於查詢數據庫。 您可以使用Hibernate而不是Linq-to-SQL,因爲Linq提供了幾乎與Hibernate相同的查詢DB的強大方法。所以在限制我們的討論到DB時,Linq可以像Hibernate一樣爲您提供相同的(或者絕大多數!)目的。

1

我想更多的人會使用NHibernate,如果它可以與Hibernate競爭。這就是說,NHibernate通常不需要在.net商店中使用。

1

您的術語已關閉。 LINQ只是用於處理數據的語法糖。 Linq to Sql可能就是你在說的。我們不知道爲什麼,有人推測反競爭,其他人聲明最後期限出現,所以他們只是剔除了什麼還沒有準備好)。所以沒有NHibernate在這裏無關緊要的機會。
實體框架(MS的支持所有數據庫的ORM工具)。當最初出現一些ORM社區hated it時,它不支持「持久性無知」以及社區期望從現代ORM獲得的許多功能,概念和前提。我相信他們正在努力改進它,但他們有很多趕上接近NHibernate國際海事組織。

所以不,NHibernate仍然是大量相關的,如果你想對你的ORM進行更好的控制。它是最靈活但最複雜的ORM之一,因此仍然佔有一席之地。

相關問題