(我想在一個特定non-.NET方式來回答可能的情況下)。
爲選擇一個ORM的最重要的標準是你的業務需求。
我想說的另一個重要標準是您對ORM未來可持續性的信念。微軟每兩年左右就有一次改變他們的數據訪問技術的趨勢,所以我認爲實體框架的未來還不清楚。 NHibernate可能會遵循與NUnit相同的路徑 - 當微軟發佈MSTest時,NUnit已經有一段時間了,但現在NUnit又有了動力,因爲微軟大多忽略了MSTest。你必須在這裏得出你自己的結論,現在微軟似乎給了Entity Framework一些愛,但據我所知,它仍然不能很好地處理枚舉,並且我沒有聽說何時可能會改變。
另一個標準是您是否偏愛開源技術或來自Microsoft或商業第三方技術的技術。
在某些時候,ORM的功能很重要。您可能需要使用多個ORM爲您的場景創建原型,以確定ORM的功能(和/或性能)是否符合您的要求。 NHibernate是.NET空間中功能最豐富的ORM。
您是否需要支持某個數據庫供應商?選擇一個支持您關心的人的ORM。 SQL Server是.NET世界中支持最廣泛的數據庫供應商。
您對代碼優先或數據庫優先設計有偏好嗎?選擇一個支持您關心的人的ORM。
你有積極的記錄與儲存庫之間的偏好還是別的嗎?選擇一個支持您關心的人的ORM。
我回答了下面鏈接的關於選擇.NET ORM的問題,部分地提供了人們詢問他們應該在StackOverflow上使用哪個.NET ORM的所有時間的鏈接。閱讀其他答案可以獲得很多價值。
NHibernate, Entity Framework, active records or linq2sql
沒有一個正確的答案,也不是選擇一個正確的一套標準。您的業務需求是最重要的考慮因素。
您必須評估相對於您的要求的ORM – Eranga
@eranga:當然,但是我的要求可能會在將來發生變化,所以很高興知道將一個ORM與另一個區別開來,無論他們在與哪個db進行通信 – jcollum
要求可能會發生變化,但您現在有一系列要求。選擇符合當前要求的ORM比不擔心未來更好。 – Eranga