2011-09-27 84 views
4

這裏有很多問題要問'我應該使用什麼樣的ORM來處理x和y',但是我沒有看到任何具體問及如何選擇它的問題。相關:Why should you use an ORM?,What ORM should I use for a ASP.Net MVC project?,Are there good reasons not to use an ORM?和更多。我應該使用什麼標準來評估ORM?

世界上有很多ORMs。我想了解如何比較它們。我聽說過有關活動記錄模型和領域模型等其他內容,我不確定這些是什麼意思。那麼我可以用什麼樣的標準來比較一個ORM與另一個呢?

如果您想知道,我們的環境是C#,MVC,SQL Server。

+2

您必須評估相對於您的要求的ORM – Eranga

+0

@eranga:當然,但是我的要求可能會在將來發生變化,所以很高興知道將一個ORM與另一個區別開來,無論他們在與哪個db進行通信 – jcollum

+0

要求可能會發生變化,但您現在有一系列要求。選擇符合當前要求的ORM比不擔心未來更好。 – Eranga

回答

5

(我想在一個特定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

沒有一個正確的答案,也不是選擇一個正確的一套標準。您的業​​務需求是最重要的考慮因素。

+0

非常感謝,保持它的通用性。 – jcollum

相關問題