この回答は、LinqがNHibernate、Castleなどとはわずかに異なる開発者グループを対象としていることを示しています。
C#はかなり新しいので、それを取り巻くすべてのDBを気にしないでください。
- NHibernate、Castle、Linqよりも優れた用語がないために他の主要なSQLラッパーはありますか?
- それらの違いは何ですか?
- 彼らはどのような開発者や開発を目指していますか?
-アダム
この回答は、LinqがNHibernate、Castleなどとはわずかに異なる開発者グループを対象としていることを示しています。
C#はかなり新しいので、それを取り巻くすべてのDBを気にしないでください。
-アダム
キャッスルと言うのは、キャッスル アクティブ レコードのことだと思いますか?
違いは、NHibernate は OR/M であり、データベースではなくドメインに集中したい開発者を対象としていることです。linq to sql を使用すると、データベースは既存のものであり、関係があり、プログラミングの一部はデータベースの定義方法によって駆動されます。
NHibernate と Castle ActiveRecord の間では、アプリケーション設計をドメインから推進しているという点で似ていますが、NHibernate を使用すると、マッピング xml ファイル (または流暢な NHibernate を使用したマッピング クラス) を提供し、Active Record では構成よりも規則を使用しています。 (属性を使用して、自然に適合しない列と設定を定義します)。Castle Active レコードは、まだバックグラウンドで NHibernate を使用しています。
1 つの OR/M が、必ずしも「唯一の正しい方法」であるとは限りません。それは、環境、開発中のアプリケーション、およびチームによって異なります。
SubSonicもチェックしてみてください。アクティブなレコードには最適ですが、主にドメインに集中したいプロジェクトには適していません。プロジェクトにもよりますが、通常は NHibernate (Castle Active Record を使用) または Subsonic を使用します。
LINQ は、拡張メソッド、ラムダ式、オブジェクト初期化子、匿名型などの新しい C# 機能のセットにすぎません。
一方、「LINQ to SQL」は、他の SQL ラッパーと比較できるものです。
実際には、Linq と NHibernate の両方を (Fluent と共に) 一緒に使用します。学習曲線に少しの忍耐があれば、すぐに恋に落ちます。
NHibernate と Linq To Sql は、オブジェクトと RDBMS の間で見つかったインピーダンスの不一致を簡単に処理できるように設計されたオブジェクト/リレーショナル マッパーです。テスト可能で永続的な無知なアプリケーションを実現したい場合は、NHibernate が最適です。Linq To Sql よりも NHibernate を常にお勧めします。どちらのツールも、データ アクセスの処理を削除することを目的としています。データ アクセス コードを実際に何回書く必要があるでしょうか。
Castle はアプリケーション フレームワークであり、Inversion of Control コンテナーであり、データ アクセスは提供しません。NHibernate を使用するための機能を提供して摩擦を減らし、NHibernate を使用した Actuve Record パターンの実装も提供します。