新しいプロジェクトを開始する場合、ORM NHibernate または LINQ に何を使用し、その理由を教えてください。それぞれの長所と短所は何ですか。
編集:LINQだけでなくLINQ to SQL(@Jon Limjapに感謝)
新しいプロジェクトを開始する場合、ORM NHibernate または LINQ に何を使用し、その理由を教えてください。それぞれの長所と短所は何ですか。
編集:LINQだけでなくLINQ to SQL(@Jon Limjapに感謝)
NHibernate の代わりに、かなりいいと思う WilsonORM について考えていたことを除いて、私は自分自身に非常によく似た質問をしました。
多くの重要な違いがあるように私には思えます。
リンク:
NHibernate:
それは本当に依存します。オブジェクトを構築し、それらを操作し、最後にそれらの変更を永続化する必要があるリッチ (Windows) デスクトップ アプリケーションを開発する場合は、NHibernate のような ORM フレームワークをお勧めします。
通常はデータをクエリするだけで、たまにしかデータを DB に書き戻さない Web アプリケーションを開発する場合は、Linq のような優れたクエリ言語をお勧めします。
いつものように、それは依存します。:-)
エラー... NHibernate の LINQがあります。
おそらく、あなたが意味するのは、どちらを使用するかということです:
私はNHibernateを好みます。
LINQ to SQL はかなり軽量ですが、テーブル構造にマップできるオブジェクト定義のタイプに関して非常に柔軟な NHibernate とは対照的に、データ構造との結合がもう少し緊密です。
もちろん、LINQ to SQL が役に立たないというわけではありません。まさにこの Web サイトで使用されています。データベース スキーマがそれほど大規模ではない小さなアプリケーションで起動して実行することは非常に役立つと思います。
NHibernate から始めるのは悪い考えです。上手いセッティングだけでいいパフォーマンスを見せてくれます。大規模なプロジェクトには EFv4 を使用し、小規模および中規模のプロジェクトには L2S (おそらく第 3 部の製品) を使用してみてください。これらの製品は、NHibernate よりも便利で柔軟性があり、すぐに開始できます。
完全なリストではありません
LinqToSQL プロ:
短所:
NHibernate プロ:
短所:
2 つの ORM の間
次の場合、LinqToSql を選択します。
次の場合、Nhibernate を選択します。
注:これは私の個人的な見解です。私は主に (クレイジーな) レガシー データベースと複雑な ETL ジョブを扱っており、SQL よりもオブジェクト モデルが大いに役立ちます。
私はNHibernateを使用していません(または知っていません)。ただ証言したいだけです。約2年間、MySQLおよびPostgreSQLデータベースでLINQ to SQLを使用しています(WindowsでDbLinqを使用し、LinuxおよびMac OS XでMonoを使用しています)。
したがって、LINQ to SQL は Microsoft 製品に限定されません。
LINQ to SQL は、小規模および中規模のプロジェクト、またはデータベース構造を完全に制御できる大規模なプロジェクトに非常に適していることを確認できます。レビューが示すように、LINQ to SQL にはいくつかの制限があり、データベース テーブルとエンティティ クラスの間に直接のマッピングがない場合、LINQ to SQL は不適切なツールになります。
注 : LINQ to SQL は多対多の関係をサポートしていません (ただし、これは数行のコードで簡単に実現できます)。
NHibernate の主な欠点は、メソッド呼び出しを利用できないことです。これらは SQL に変換できません。これを回避するには、難しい式ツリーを再作成する必要があります。