NHibernate、Castle、Linq の違い - 誰を対象としていますか?
-
01-07-2019 - |
質問
この答えはこう言っています Linq は、NHibernate や Castle などとは若干異なる開発者グループをターゲットにしているということです。
C# はあまり初めてなので、それを取り巻く DB のことは気にしないでください。
- 適切な用語が見つかりませんが、Hibernate、Castle、Linq 以外に主要な SQL ラッパーはありますか?
- それらの違いは何ですか?
- どのような開発者や開発を対象としていますか?
-アダム
解決
Castle というときは、Castle Active Record のことを指していると思いますか?
違いは、Hibernate が OR/M であり、データベースではなくドメインに重点を置きたい開発者を対象としている点です。linq to sql では、データベースが事前に存在しており、データベースの定義方法によって関係やプログラミングの一部が決まります。
NHibernate と Castle ActiveRecord の間で、アプリケーション設計をドメインから駆動するという点で似ていますが、NHibernate ではマッピング XML ファイル (または流暢な NHibernate によるマッピング クラス) を提供し、Active Record では設定よりも規則を使用します。 (属性を使用して、自然に適合しない列や設定を定義します)。Castle Active レコードは依然としてバックグラウンドで NHibernate を使用しています。
1 つの OR/M が必ずしも「1 つの真の方法」であるとは限りません。それは環境、開発しているアプリケーション、チームによって異なります。
こちらもチェックしてみてください サブソニック. 。アクティブな記録には最適ですが、ドメインに主に焦点を当てたいプロジェクトには適していません。プロジェクトに応じて、私は通常 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 はアプリケーション フレームワークおよび制御の反転コンテナーであり、データ アクセスを提供しません。NHibernate を使用するための機能を提供し、摩擦を軽減します。また、NHibernate を使用した Actuve Record パターンの実装も提供します。