2009-09-04 50 views
49

我的團隊正在ASP.NET MVC中開始一個新項目,我們想知道用什麼技術來進行數據訪問。你如何決定哪一個最好?哪個性能最好? 哪一個更容易使用和維護?NHibernate,實體框架,活動記錄或linq2sql

+2

除非您指的是特定的東西,例如Castle ActiveRecord,否則活動記錄不僅僅是一種技術[http://en.wikipedia.org/wiki/Active_record_pattern]的設計模式[http://www.castleproject.org/ ActiveRecord的/ index.html的]? – 2009-09-04 11:57:04

+0

明白了,好吧,我的意思是亞音速活動記錄 – Omu 2009-09-05 13:59:49

+0

對於F#,SQLProvider:https://github.com/fsprojects/SQLProvider – 2016-08-17 20:51:31

回答

68

如果.NET 4.0在NHibernate或Entity Framework之間進行選擇。 NHibernate更具擴展性,通常功能更豐富。實體框架對那些寧願擁有微軟提供的產品的公司來說效果更好。它們都是有效的選擇,並且沒有人通過對比來公佈客觀的重大打擊。這是更好的非客觀比較的一個:

http://ayende.com/blog/archive/2010/01/05/nhibernate-vs.-entity-framework-4.0.aspx

如果.NET 3.5或更早版本,選擇NHibernate的。

Choosing Database and ORM for a .NET project

Which ORM tool should I use for .Net development

Easiest to learn and use .NET ORM framework?

Some suggestions on which .NET ORM to look at learning

Best ORM Tool

https://stackoverflow.com/questions/380620/what-object-mapper-solution-would-you-recommend-for-net

https://stackoverflow.com/questions/249550/what-orm-frameworks-for-net-do-you-like-best

Best free ORM tools to use with .NET 2.0/3.5

https://stackoverflow.com/questions/132676/which-orm-for-net-would-you-recommend

後2009年9月04日:

OR Mapping tool

O/RM Choice (not reliant on linq)

https://stackoverflow.com/questions/1469761/nhibernate-vs-entity-framework-vs-something-better

How to choose an object relational mapping for .net

這就是說,事情會改變。既然NHibernate支持Linq,我認爲NHibernate在絕大多數情況下都是明智的選擇。對於較長且相當最新的分析,隨意閱讀:

.NET and ORM - Decisions, decisions

+1

這個問題已經獲得了一些高於平均水平的答案,即使它是一個dup:http://stackoverflow.com/questions/5101974/comparison-entity框架 – 2011-02-24 16:27:14

+1

個人而言,我喜歡這兩種框架,但Entity Framework與NHibernate相比有一個很大的優勢:它更容易工作。尤其對於NHibernate的新手來說,啓動階段可能會非常困難。 EF做得更好。然而,在一些地區,NHibernate是優越的,例如當涉及到擴展框架NHibernate提供了更多的選擇。 – 2013-03-28 15:34:29

+0

看看TinyDA https://github.com/kumait/TYNDA – Kumait 2016-06-30 00:59:45

6

我的首選是LLBLGenPro - 一個非常棒的ORM,它的工作方式與您所期望的相似。它不是基於像實體框架或nhibernate這樣的配置,它基於你的db生成你的DAL(通過他們的工具有很大的靈活性)。

http://www.llblgen.com/defaultgeneric.aspx

2

LINQ2SQL是probobly最容易使用。實體框架提供了很好的可擴展性,未來的版本將包含很多改進。

性能的一個關鍵規則:編寫易於維護,讀取和分發的代碼;如果它慢 - 優化!

我認爲,今天的ORM之間的性能差異並不明顯,所以你應該選擇一個感覺最舒適和高效的工作。

+0

Nah;)https://github.com/FransBouma/LinqToSQL2 – 2015-05-16 07:07:23

2

實體框架比linq2sql具有更好的關係映射(例如,它具有多重關係)。

我還沒有使用過其他兩種,但我在Java中使用了Hibernate,使用它非常簡單。

+0

可以使用PLINQO if您需要多對多的關係支持並使用LINQ-2-SQL。 http://www.codesmithtools.com/product/frameworks – 2011-04-21 15:30:12

1

blog post比較各種數據技術的.NET在各方面(性能,可維護性,可測試性等)。可能對您的決策過程有所幫助。

+0

邁克爾,SUbSonic是不體面的。我真的不明白爲什麼人們會嘗試它。只有它的300Kb組裝到例如4 MB @ OpenAccess - 必須清楚它只是一個小玩具。在那裏忘了LINQ--我敢打賭,它的LINQ支持永遠不會與其他人相提並論。 – 2009-11-05 21:54:33

+0

對不起,「SubSonic」和「Just its」=>「比較它」;) – 2009-11-05 21:55:42

0

我面臨同樣的困境。 LINQ2SQL將給你更多的靈活性和對數據訪問的直接控制,但是實體框架是「企業」解決方案。 我目前正在嘗試 - SubSonic,看起來很有希望。

0

比較奧姆斯 - 採取http://ormbattle.net/

+6

該網站已經有一個非常糟糕的聲譽。 :( – 2009-09-05 15:13:47

+1

同意,你必須看看哪個ORM公司支持這個網站! – Codezy 2009-09-18 22:02:44

+0

夥計們,訪問常見問題和博客@ ORMBattle,他們解釋了很多。 Michael,這個網站有壞名聲_for you_ - 我懷疑是因爲SubSonic你提倡這裏顯示了它的真實面貌 – 2009-11-05 22:12:17

1

我的選擇,一看就是Devart LinqConnect(HTTP:// WWW。 devart.com/linqconnect/)。該產品與LINQ to SQL一樣易於使用(甚至與其兼容),同時還提供了像Entity Framework這樣的高級ORM功能。我喜歡他們的可視化設計和其ORM功能:

  • 複雜類型
  • 延遲加載
  • PLINQ
0

我一直在使用實體框架(代碼第一)和NHibernate有一段時間了,我更喜歡nHibernate,特別流利。它似乎給了我更多的靈活性,以便將我的對象映射到數據庫。此外,它還可以更好地控制對象的延遲加載和級聯操作。