EF対NHibernate [終了]


8

ビジネスアプリケーションの作成を開始してから(高レベルのフロントエンドまたは非常に低レベルのシステムプログラミングを行う前に)過去2年間で、データセット、linqからsql、そして現在はエンティティフレームワークを学びました。次に見る論理的なものはNHibernateのようです。

私が最終的にEFに到達した理由は、(1)デザイナーによるサポートが最も優れていること、(2)マイクロソフトによって最もサポートされていることです。

私がNHibernateに興味を持っている理由(これらには前提の要素があります)は次のとおりです。(1)MSがデータアクセステクノロジーをチャーンするほど速く、まったく異なるものに取って代わられない可能性があります。それが何をするためのフロントランニングツールと(3)それはかなり安定していて、かなり長い間遡ることができるように見えます。

誰かが2つの比較を発表しましたか?特定の種類のアーキテクチャでは、どちらが優れているか?それとも、スタイルと好みの問題だけですか?

回答:


6

この時点で、NHがEFより優れている主な(唯一の?)利点は、いくつかの非常にきめの細かいフェッチ戦略だと思います。すべてを遅延読み込みまたは一括読み込みする代わりに、NHは非常に優れた中間オプションを提供します。

そうは言っても、データアクセスをそのレベルで制御する必要はなかったので、EFのシンプルさにより、選択が簡単になりました。

EFデザイナファイルは、他の方法で操作するのに非常に適しているため、ソース管理の悪夢になる可能性があることに注意してください。うまく融合しない、またはまったく融合しない。何かを変更する必要がある場合は、明示的なロックを使用して必ずチェックアウトしてください。


3
デザイナーのものは+1。私はデザイナーに関連する何かとは良い経験がありませんでした。
Codism 2011

SQLServer以外のDBを常に使用できることを忘れないでください。EFは、非標準のSQLを生成する場合があります。
gbjbaanb 2011

変更がedmxファイルに反映されるため、デザイナーファイルを無視リストに入れて再生成することで、マージの問題を回避できますか?
アーロン・アノディ

1
@Gabriel、私はedmxファイルが問題の原因だと思います。人々はedmxを変更するデザイナーを更新してから、チェックインします。他の人が同じことを行った場合、すべてがうまくいきます。
Adam Rackis、2011

5
ダウンロード(公式、マイクロソフトでサポートされていますが、.NET 4.0には含まれていません)EF 4.1をダウンロードすると、Code Firstを使用して、FluentNHibernateと非常によく似たマッピングを作成できます。ソース管理で非常にうまく機能します。
アーロンノート、2011

3

私たちは、アーキテクトがEFではなくNHibernateを選択するプロジェクトを行っています。パブリッシャーとサブスクライバーの要件が最初から存在していたため、選択が逆になったと思います。

同期フレームワークの使用を計画している場合は、EF を使用します。NHibernateは、背後で行われる更新(データの取得元を指定する列、データの変更者、および最新のコピー)に対応できないためです。

あるデータベースから別のデータベースにデータを複製する必要がある場合(および主キーを同じに保つ場合)、そのsession.Replicate機能は十分に文書化されておらず、単純なコピーよりも時間がかかるようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.