2009-09-04 11 views
49

私のチームはASP.NET MVCで新しいプロジェクトを開始しています。私たちはデータアクセスにどのような技術を使用するのか疑問に思っています。どちらが最善かをどのように決定しますか?どちらが最高のパフォーマンスを備えていますか? 使いやすく保守しやすいものはどれですか?NHibernate、Entity Framework、アクティブレコード、またはlinq2sql

+2

アクティブレコードは、Castle ActiveRecord [http://www.castleproject.org/]のような特定のものを参照していない限り、テクノロジ[http://en.wikipedia.org/wiki/Active_record_pattern]よりもデザインパターンです。 activerecord/index.html]? –

+0

それはよく、ああ、私は亜音速のアクティブレコードを意味する – Omu

+0

F#の場合、SQLProvider:https://github.com/fsprojects/SQLProvider –

答えて

68

.NET 4.0の場合は、NHibernateまたはEntity Frameworkのいずれかを選択します。 NHibernateはより拡張性があり、一般的にはより多くの機能が豊富です。 Entity Frameworkは、マイクロソフトが提供するものをむしろ提供する企業にとってはより効果的です。彼らはどちらも有効なオプションであり、誰もまだ打撃比較による客観的な打撃を公表していない。これは、より良い非客観的な比較の一つである:

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

2009年9月4日の後

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

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 -framework –

+1

個人的に、私は両方のフレームワークが大好きですが、Entity FrameworkはNHibernateに比べて大きな利点があります。特にNHibernateを初めて使う人にとっては、スタートアップ段階は非常に困難です。 EFはこれをはるかに良くします。しかし、いくつかの領域では、NHibernateは優れています。フレームワークを拡張することになるとNHibernateはより多くのオプションを提供します。 –

+0

TinyDAを見てくださいhttps://github.com/kumait/TinyDA – Kumait

6

私の好みはLLBLGenProです。本当に素晴らしいORMで、あなたが期待しているように機能します。エンティティフレームワークやnhibernateのような設定に基づいていないので、dbに基づいてDALを生成します(ツールを使用すると柔軟性が高くなります)。

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

2

LINQ2SQLは使いproboblyが最も簡単です。 Entity Frameworkは優れた拡張性を提供し、今後のリリースには多くの改善が含まれます。

パフォーマンスの鍵となるルールの1つ:保守、読み込み、配布が容易なコードを書く。それが遅くなるなら - 最適化する!

今日のORMのパフォーマンスの違いはわかりやすいと思いますので、作業に最も快適で効率的なものを選ぶ必要があります。

+0

Nah;)https://github.com/FransBouma/LinqToSQL2 –

2

エンティティフレームワークは、linq2sqlよりもリレーションシップのマッピングが優れています(たとえば、複数のリレーションシップを持つなど)。

私は他の2つを使用しませんでしたが、私はJavaでHibernateを使用しました。使用するのはかなり簡単でした。

+0

もしPLINQOを使うことができたら多対多リレーションシップをサポートし、LINQ-2-SQLを使用する必要があります。 http://www.codesmithtools.com/product/frameworks –

1

このblog postは、さまざまな側面(パフォーマンス、保守性、テスト容易性など)で.NETのさまざまなデータ技術を比較します。あなたの意思決定プロセスの助けになるかもしれません。

+0

Michael、SUbSonicはまったくまともではありません。私は本当に人々がなぜそれを試しているのか理解していません。その300Kbのアセンブリだけが、例えば、4 Mb @ OpenAccess - それはほんのちょっとしたおもちゃであることは明らかです。 LINQについては忘れてしまいました。LINQのサポートは、他の人たちと比較することはできません。 –

+0

申し訳ありません、 "サブソニック"と "ちょうど" => "比較";) –

0

私は同じジレンマに直面しています。 LINQ2SQLはデータアクセスの柔軟性と即時制御を実現しますが、 はEntity Frameworkが「エンタープライズ」ソリューションです。 私は現在これを試しています - SubSonicと非常に有望に見えます。

0

オームズを比較するには - http://ormbattle.net/

+6

そのサイトはすでに非常に評判が悪いです。 : –

+1

合意して、どのORM社がこのウェブサイトをサポートしているかを調べる必要があります。 – Codezy

+0

よくある質問とブログ@ ORMBattleをご覧ください。 –

1

私の選択について見てみましょうDevart LinqConnectます(httpです:// WWW。 devart.com/linqconnect/)。この製品は、LINQ to SQLとして使いやすく(しかも互換性があります)、同時にEntity Frameworkなどの高度なORM機能を提供します。

  • 複合型
  • 遅延ロード
  • PLINQ
0

私は今、いくつかの時間のためのEntity Frameworkの(コード最初)とNHibernateはを使用してきた。私は彼らのビジュアルデザイナとそのORMの機能を好みます私はnHibernateを特に好んでおり、特に流暢です。私のオブジェクトをデータベースにどのようにマップするかは、より柔軟になりました。さらに、オブジェクトの遅延読み込みやカスケード処理を大幅に制御することができます。

関連する問題