回答
需要注意的是,Linq不僅僅是一個ORM工具。名稱二還有Linq-To-XML和Linq-To-Objects,但還有更多。 Linq是C#和VB的一組語言擴展,在處理對象集合時爲您提供語法糖。
至於你的主要問題,如果你有從表到域對象的一對一映射,Linq-to-SQL沒問題。 NHibernate進入它自己的地方是你有一個現有的複雜的域模型或現有的複雜的數據庫模式,你想在它們之間進行映射。
此外,它可以與Linq-To-NHibernate一起使用。
我不喜歡linq-to-sql(因爲這就是你的意思),因爲你必須設計一個數據庫模式。有了休眠(儘管我使用了一個名爲XPO的類似產品),您只需製作對象並在框架中處理關係(一對一,多對一,M到M)。
這是linq to sql的一大缺點。所以不,他們不是相互排斥的。
我不明白。我沒有使用hibernate,但我知道linqtosql會自動從數據庫模式中推斷關係。您不必手動設置它們。 – recursive 2009-11-22 18:10:22
使用Hibernate也不能跳過設計數據庫的步驟。 Hibernate和Linq只是查詢現有的數據庫(可能通過使用數據庫模式)......但它們不會爲您創建模式。 – 2009-11-22 18:24:25
Linq更關注如何統一查詢數據庫,XML,對象或任何自定義數據存儲的方式。 Hibernate僅用於查詢數據庫。 您可以使用Hibernate而不是Linq-to-SQL,因爲Linq提供了幾乎與Hibernate相同的查詢DB的強大方法。所以在限制我們的討論到DB時,Linq可以像Hibernate一樣爲您提供相同的(或者絕大多數!)目的。
我想更多的人會使用NHibernate,如果它可以與Hibernate競爭。這就是說,NHibernate通常不需要在.net商店中使用。
單獨存在Linq To NHibernate證明不是。
您的術語已關閉。 LINQ只是用於處理數據的語法糖。 Linq to Sql可能就是你在說的。我們不知道爲什麼,有人推測反競爭,其他人聲明最後期限出現,所以他們只是剔除了什麼還沒有準備好)。所以沒有NHibernate在這裏無關緊要的機會。
實體框架(MS的支持所有數據庫的ORM工具)。當最初出現一些ORM社區hated it時,它不支持「持久性無知」以及社區期望從現代ORM獲得的許多功能,概念和前提。我相信他們正在努力改進它,但他們有很多趕上接近NHibernate國際海事組織。
所以不,NHibernate仍然是大量相關的,如果你想對你的ORM進行更好的控制。它是最靈活但最複雜的ORM之一,因此仍然佔有一席之地。
- 1. GWT是否消除了對前端Web Developer的需求?
- 2. Jquery/MooTools/Prototype是否消除了對GWT的需求?
- 3. Process Cube是否消除了對SSIS的需求?
- 4. ARC是否消除了對臨時變量的需求?
- 5. 改進Linq語句以刪除對foreach循環的需求
- 6. 我是否需要刪除此對象?
- 7. 我是否需要刪除對象?
- 8. Hibernate的創造除了所需的表
- 9. 非語義框架是否消除了對媒體查詢的需求?
- 10. Oracle12c優化器自適應功能是否消除了對索引的需求?
- 11. ADO.NET是否消除了對數據庫驅動程序的需求?
- 12. 如何檢查我是否只刪除了所需的數據?
- 13. 角模塊是否減少了對桶的需求?
- 14. 在3.2中添加到MongoDb的文本索引是否刪除了對lucene的需求?
- 15. Spring Hibernate刪除對象
- 16. 當我刪除一個對象時,被刪除的對象是否也被刪除了?
- 17. Hibernate是否需要Java EE
- 18. 在瀏覽器中運行Java applet時,是否可以刪除對話需求?
- 19. MySQL 5.7.9是否刪除了對ALTER IGNORE TABLE的支持?
- 20. youtube是否刪除了原生控件?
- 21. 是否從Spring 3.2.1中刪除了RequestMapping
- 22. 映射多對一時在Hibernate中不需要的行刪除
- 23. 是否需要刪除靜態向量?
- 24. 對象的Java Hibernate會話刪除
- 25. Hibernate的許多一對多刪除
- 26. hibernate中多對一映射的需求是什麼?
- 27. 處理對象時是否需要刪除事件?
- 28. 不是很瞭解如何刪除字段與Hibernate
- 29. 是在Hibernate 4.x中刪除或棄用了WeblogicTransactionManagerLookup嗎?
- 30. 更新分離對象時,Hibernate是否可以刪除孤立的集合?
所以linq只允許你從一個表中查詢? – 2009-11-22 18:23:46
事實上,Linq並沒有什麼特別的與收藏 - 這是更一般的。請參閱http://stackoverflow.com/questions/1418106/how-much-is-there-to-linq/1418176#1418176 – Dario 2009-11-22 18:27:52
否,因爲您可以將對象集合與join關鍵字一起使用。 Linq-To-Sql框架然後會生成將被髮送到服務器的sql連接。 – 2009-11-22 18:28:03