大規模な老朽化した社内エンタープライズアプリケーションの再開発を開始する準備をしています。 ASP.NET MVCを使用することを決定しましたが、どのオブジェクトリレーショナルマッピング(ORM)を選択するかを検討しています。もちろん、利用可能なオープンソースおよび有料のORM実装は多数あります。ただし、 NHibernate が最大のマインドシェアを保持しているようですが、 Entity Framework はMicrosoftの新しい注目度です。
調査を行って両方をいじっている間、どのORM(NHibernate、Entity Frameworkなど)を好むのか、そしてその理由について、コミュニティに公開したいと思いました。
やや似たStackoverflowの質問
追加の.NETORMリーディング
Sharp Architecture NHibernateを使用するASP.NETMVCアプリケーションフレームワークを確認する必要があります。
私は過去数年間にいくつかのO/RMを使用してきましたが、NHibernate以外のものを選択する方法はありません。
あなたがリンクしている質問で、人々があなたに何以上の情報を提供できるかわかりません。
クレイジートークの答え:なし。
これは、ORMが正しく使用された場合に優れたテクノロジーではないということではありません。しかし2011年には、すべての問題が釘であるとは限らないユニバーサルハンマーに急速になりつつあります。そして、現代のORMには非常に多くのことが起こっているので、特にそれらに精通していない人々にとって、彼らは物事を助ける以上に物事を混乱させる可能性があります。または、単純なSQLの方が優れている場合もあります。 ORMがどれほど優れていても、抽象化willある時点でリークします。
注目すべきもう1つの側面は、NoSQLの動き全体です。このテクノロジーはまだ少し新しいものですが、新しい作業の場合は、アプリケーションの構築に非常に手間がかかるため、考慮しなければならないデータアクセス戦略です。
簡単な答え:両方を使用してください(私は実際に両方を使用しています)...
ORMには複数の可能性があり、すべてはあなたが望むものに依存します。
実際のORMマッパーとして、NHibernateおよびFluent NHマッピングを強くお勧めします。ニースのアーキテクチャをまとめるには多くの調査が必要ですが、それでも邪魔になるものはありません。最小限の妥協で、真の柔軟性が得られます。
EF6x(コアは製品対応のIMHOではありません)はORMと呼ばれますが、生成されるものはDALに近いものです。 EF6では効果的にできないことがいくつかあります。それでも、これは読み取りモデルの私のお気に入りのツールですが、NHibernate(DDD /書き込みモデルに使用するNH)と組み合わせています。
今度はパフォーマンス-常に賛否両論です。 ORMアーキテクチャ(私の記事を参照: ORMの悪い習慣を避ける )を深く理解すると、直感的に次の方法を見つけることができます。それを速くします。 EF6x 5xをより速くする方法に関する私の別の記事です(少なくとも読み取り状況では): EF6.x 5xより速く