私が引き受ける予定の新しいプロジェクトのEntity Frameworkを調べています。その研究の一環として、業界の専門家に、安定していて「現実世界」での実装の準備ができているかどうか尋ねています。
実行中は:
- EF
- NHibernate
- DevExpress XPO
私はすでにXPOの経験が豊富ですが、特に満足していません。
私が引き受ける予定の新しいプロジェクトのEntity Frameworkを調べています。その研究の一環として、業界の専門家に、安定していて「現実世界」での実装の準備ができているかどうか尋ねています。
実行中は:
私はすでにXPOの経験が豊富ですが、特に満足していません。
回答:
はい、ただしいくつかの注意点があります:
マイクロソフトによって完全にサポートされており、コミュニティは成長しています。ただし、最も近い競合者であるnHibernateよりも新しいため、コミュニティはまだ成熟していません。
コミュニティの成熟度が低いことに加えて、EF4で機能を利用できるが、ほとんど文書化されていない場合があります。またはEF4は、Googleがサポートできない例外をスローします。
Microsoftの意図どおりに使用するとフル機能を備えていますが、私の経験では、既存のシステムに改造するのは非常に難しい場合があります。理想的には、100%Microsoftスタックのグリーンフィールドシナリオで使用します。それは確かに他のシステムと混在するのに十分な柔軟性がありますが、そうすることはかなり困難を増します。
ただし、要点を繰り返しますが、本番環境で使用するには完全で安定しています。
注意すべき重要な点の1つは、明白に見えますが、痛みを引き起こすまで見過ごされがちですが、ORMはリレーショナルパラダイムからOOパラダイムへのマッピングに取り組んでいることです。これらの層のいずれかがそれぞれのパラダイムのルールに従っていない場合は、さらに傷つくことになります。
これは両方の方法で実行できます。SQLとOOPのリレーショナル/セットベースのパラダイムに精通している場合、ORMは2つをバターのように混ぜ合わせます。データベースがOOになりたいように見え、OOコードがレコードベースにしたいように見える場合は、YMMVです。
私たちはいくつかの生産アプリケーションでEFを使用しています。また、いくつかのプロダクションアプリにNHibernateがあります。STWによる、EFが「Microsoftの意図どおりに使用した場合」に最も効果的に機能するというコメントは確かに当てはまります。NHibernateチームが意図したパターンに従って使用した場合に最もよく機能することは、NHibernateにも当てはまります。XPOの知識も経験もありません。
NHibernateを運用に投入したことを後悔していません。
Entity Frameworkを本番稼働させたことを後悔していません。
EFを使用する要因の1つは、LINQとの統合です。NHibernateはLINQでも多くの作業を行ってきましたが、まだ調査する時間はありません。
私たちはWebプロジェクトにEF4.1をコードファーストアプローチで使用しています。前述のように、Microsoftが意図したとおりの使用方法を維持すると、多くの問題を回避できます。
しかし、システムがまだ成熟していないことに気づくでしょう。私はこれを次の理由で言います。