2009-09-24 18 views
12

(這必須是一個常見問題的對象關係映射,所以我希望它被關閉的重複,但是我無法找到包含的問題等良好的概述問題。)如何選擇.NET

應該當選擇一個ORM的.NET系統有人考慮哪些

如何是以上地址爲的ORM,它們是.net系統常用的。

(女巫堆棧溢出的問題,我應該鏈接到在回答時,我說:「考慮使用ORM」的.NET問題)

是否在一個願望提供了新的答案,並獲得獎金?

+0

http://c2.com/cgi/wiki?ObjectRelationalToolComparisonDotNet – eschneider 2014-03-18 23:54:45

回答

9

這是我一直指出人們關於選擇一個主要問題/答案。NET的ORM:

NHibernate, Entity Framework, active records or linq2sql

我放了一堆的「重複」式的問題在我的答案上一個。因此,您可以從各種不同的角度進行大量閱讀。

我也將盡力回答您的具體問題:

時 選擇一個ORM的.NET體系應該是什麼有人考慮?

  • 你要確保它的工作原理與 數據庫。如果你的數據庫 設計是最先進的15年 前,許多較小的和/或不太成熟的 奧姆斯不會與你缺乏 鍵,怪異的關係等方面的工作

  • 你想確保它與您的數據庫供應商的 一起使用。 SQL Server 支持幾乎總是 可用,但其他數據庫可能或 可能不支持各種ORMs (MYSQL似乎是第二個最常見的支持數據庫 )。

  • 如果你想根據你的.NET類生成你的數據庫 ,你需要 來確保你的ORM支持。

  • 如果你想表現,我想你 遠離壞遠離執行 的,但這些絕不會做出 前5之列,所以只要你去 有一些主流 街道的ORM信譽,你可能在這裏很好 。

  • 你需要確保它有你需要支持的功能:http://ayende.com/Blog/archive/2006/05/12/25ReasonsNotToWriteYourOwnObjectRelationalMapper.aspx

  • 考慮廠商鎖定,以及如何 容易,你可能會或可能無法 逃避它(對於數據庫 供應商和ORM供應商)。

  • 考慮你想花多少錢。

  • 考慮你想要的代碼 代。

  • 考慮你想要的單元測試 的支持。

  • 考慮你花了多少時間去研究 選項。

  • 考慮圍繞ORM存在 的社區。

有很多事情要記住。我相信我能想到更多。最後,很多情況是情境化的,你需要自己做出最適合你和你的項目的決定。

如何上面由ORM 是在通常使用的.NET 系統來解決。

我知道的唯一一個.NET ORM幾乎滿足了所有需要.NET項目的可能(減去更隱晦的數據庫供應商)是NHibernate。已經在許多不同的場景中用很多「傳統」數據庫進行了測試。

+1

針對NHibernate的+1 – 2009-09-24 23:02:49

0

我不是一個.net開發者,但你應該檢查出nHibernate。它是Java技術水平的.net版本。我相信這對於.net來說也是一個很好的解決方案,因爲它使得映射對象非常容易,但是仍然足以將對象映射到幾乎任何類型的sql模式。

2

ORM Battle
整個網站致力於分析和比較各種.NET ORM(對象關係映射)產品!請記住,即使ORMBattle網站只比較大約7或8個ORM(儘管它們的確可以比較,但它看起來相當徹底,但在下面看到免責聲明)。

根據SharpToolBox website,大約有40個ORM可用! ORM產品列表及其在SharpToolBox網站上的描述應該爲您提供一個良好的開端。看到這裏: SharpToolBox Search Results for Object-Relational Mapping

考慮到幾乎每個開發人員和每個應用程序的數據訪問需求可能會有所不同,找到他們之間的全面比較將是困難的。這可能是超過40種不同的ORM產品存在的原因,因爲在ORM的世界中沒有「一刀切」。另外,請記住,ORM產品之間的任何比較可能是「有缺陷的」,因爲您不能始終確定不同ORM產品的各種功能是爲完全相同的目的而設計的。 AJ在這個答案上的評論鏈接到由Ayende Rahien誰描述了這個現象時ORMBattle比較NHibernate的其他ORMs。

我認爲最好的方法是查看基準,並閱讀每個ORM的描述,但不要從字面上理解這些內容,而應根據自己的應用程序應該做什麼來解釋這些數字。例如,如果您的應用程序主要一次讀取和寫入數據庫記錄,那麼您可能會使用完全不同的ORM產品,而不是需要批量處理數據庫記錄的應用程序。

+1

由ORM Battle完成的分析的有用性是非常有爭議的...一個很好的閱讀:http://ayende.com/Blog/archive/2009/ 08/15/benchmarks-are-useless-yes-again.aspx – 2009-09-24 11:23:41

+0

@AJ - 有趣的文章。我同意基準(任何事情)都可能會引起誤解。這就是爲什麼每個尋找ORM工具的人都應該根據每個人(和他們的需求)進行自己的研究。基準通常可以像統計數據一樣,我們知道它們可能是多麼有用! ;)(http://www.quotegarden.com/statistics.html) – CraigTP 2009-09-24 11:35:00

+0

這就是爲什麼有大的常見問題部分:)請參閱http://ormbattle.net/index.php/faqs.html – 2009-11-05 21:58:47

0

在NHibernate或Entity Framework之間進行選擇。 NHibernate更具擴展性,通常功能更豐富。實體框架效果更好,易於使用,功能豐富。

這兩個框架都很棒,Entity Framework比NHibernate有一個很大的優勢:它的工作起來要容易得多,啓動階段可能非常困難。 EF做得更好。然而,在一些地區,NHibernate是優越的,例如當涉及到擴展框架NHibernate提供更多選擇

最後,接你的電話。兩人中的任何一個都不會讓你失望。