私は ORM ツールの Entity Framework と LLBL のバックグラウンドを持っています。
NHibernate をベースにした新しいシステムの構築を依頼されました。私はそうしたことがないので、新鮮な目でそれに来ています。
Fluent NHibernate でのマッピングと NHibernate での「コードによるマッピング」の違いは何ですか? 好みはありますか?
私は ORM ツールの Entity Framework と LLBL のバックグラウンドを持っています。
NHibernate をベースにした新しいシステムの構築を依頼されました。私はそうしたことがないので、新鮮な目でそれに来ています。
Fluent NHibernate でのマッピングと NHibernate での「コードによるマッピング」の違いは何ですか? 好みはありますか?
Fluent NHibernate は、NHibernate の標準 XML マッピング ファイルに代わるものを提供します。XML ドキュメントを記述するのではなく、厳密に型指定された C# コードでマッピングを記述します。これにより、リファクタリングが容易になり、可読性が向上し、コードがより簡潔になります。
対。
これは、ConfORM ライブラリに基づいた、3.2 以降の NHibernate の不可欠な部分である XML レス マッピング ソリューションです。その API は、XML の命名と構造に準拠しようとします。マッピング メソッドの構築方法には、強力な規則があります。その名前は、ほとんどの場合、XML 要素の名前と同じです。
好みのものもあれば、既存のコードベースのものもあります。NHibernate に非 XML マッピング オプションが組み込まれていない時期がありました。これを修正するための解決策がいくつかありました。たとえば、confORM、Fluent NHibernate、およびおそらく私が気付いていないその他のものです。
3.2 の時点で (おそらく 3.0)、NHibernate には "Mapping by Code" があると思います。Fluent NHibernate よりも優れている点は、追加のライブラリが必要ないことと、NHibernate と同じチームによってサポートされていることです。一方、Fluent NHibernate はもう少し成熟しており (私が聞いたところによると)、より広範なマッピング関数セットをサポートできます。
「既存のコードベース」についても触れました。明らかに、すでに Fluent NHibernate でマップされているプロジェクトがある場合は、それを続行するのが最善です。新しく始めている場合は、ビルトインの「Mapping By Code」を試してみる価値があるかもしれません。