2009-04-08 9 views
5

NHibernateまたはADO.NET EFを使用することができるMicrosoft .NETの店で働いています。どちらか一方を選ぶべきときには、どのような指針を使用すべきですか?ADO.NETエンティティフレームワークとNHibernate - いつ他のものを使用するか

例えば、Silverlightアプリケーションを作成するときのように、EF-to-> ADO.NET Data Services-to-> Silverlightは生産性向上をもたらし、余分な労力を要さずにRESTサービスAPIを提供します。

アプリでアプリをガイドする際に役立つその他の事項はありますか? (コメントに基づく)

UPDATE: この1つはWhat differentiates Nhibernate from other ORM’s?他の人が(亜音速のような)奇妙な接線にオフに行くと、直接2を比較しません少し便利です。私は具体的には両方を使う人を探していて、自分が使うプロジェクトでプロジェクトを決めます。

+0

これは何度も重複しています。このページの右側にある関連する質問をご覧ください。 –

答えて

6

要するに、EFには、永続的な無知のサポートがありません。私が昨年EFで最初にソリューションを構築しようとしたとき、私はあなたのアプリケーションにPOCOを持つことができないということがちょっと面倒でした。私は私のモデルとのデカップリングの度合いを高めたいので、NHibernateに切り替えることになりました。それ以来、誰かがEF POCOアダプタを書いています。 http://code.msdn.microsoft.com/EFPocoAdapter - 実際には、オブジェクトをマップするためのアダプタレイヤを生成するコード生成器です。

私のアプリはNHibernateでも少し速く走っていました。いずれかのソリューションを構成するのが初めてだったので、塩の粒でそれを取る。

+0

.NET 4に同梱されているEF v2.0では、PEの無知が計画されているようです。0/VS 2010、2010年初めに –

+0

ありがとうございます。忍耐がv2で来ているのを聞いてよかった。アダプターを見て、それを見たことがないだろう。しかし、今後18ヶ月で、私はNHを中心にしていると思います。私はすでにこれらのダーン設定ファイルを書く方法を学んだ;) – BuddyJoe

+0

...そして今、あなたは "クール"だれもが流暢にそれを行うように、再度マッピングを解除する必要があります:) http://fluentnhibernate.org/ – HenningK

2

おそらく、今のところエンティティフレームワークを完全に避けているでしょう。家事が与えられたのはvote of no confidenceです。NHibernateほど成熟しているわけではありません。

私は時間が経つにつれて改善されると確信しているので、エンティティフレームワークを評価し続けます。

+0

+1 「no confの投票」を見ていて、ブログには欠落している機能や不足している機能が掲載されています。しかしそれについてのあなたの権利は向上しています。マイクロソフトは通常、3回目の試行ですぐに物事を取得します。 – BuddyJoe

4

マイクロソフトでは、サーバー上に存在するビジネスロジックレイヤーからSilverlightとの間でデータをやりとりするための "ORMに依存しない"新しいソリューション(最近は.NET Ria Services)を開発し始めました。

彼らはNHWILLがここでサポートされることを公に言及しています(MIXのスライドでも)。

あなたが最もコミュニティサポートを持つソリューションを探しているなら、NHibernateは確かに答えです。私はそれが急な学習曲線を持っていることを認めるでしょうが、私の経験ではそれが最も価値があると確信しています。単に "エンティティフレームワーク"と "nhibernate"の比較検索を行うと、あなたは私が何を意味するかを見るでしょう。ほとんどのEFのものは "プレス"になりますが、NHibernateのものは実際には技術的で厄介な詳細です。そして質問。答えている。

しかし、他のポスターが言及しているように、私はエンティティフレームワークが時間とともに改善すると確信しています。今のところ、1つのツールセットで多すぎる問題を解決しようとしていると思います。 NHibernateはただ一つのことをしますが、例外的にうまくいきます。

アプリケーションデザインの問題もあります。 EFはC#アプリケーションにデータベースを提供するように構築されているようです(現在のインカネーションで)。 NHibernateは逆のやり方で、オブジェクトモデルを持続させるのをより簡単にします。

+0

+1良い考え。あなたはNHibernateで私を売る必要はありません。私は今、約3ヶ月間それを掘り下げています。私はそれがEFよりもはるかにカスタマイズ可能でモジュラーであることがわかります。 NHのやり方は私に語ります。 EFのLINQはまだ少し外国人だと感じています。 – BuddyJoe

+1

RIAサービスを読み上げます。 – BuddyJoe

関連する問題