NHibernate は、すべての依存関係があるため、私たちの環境にはあまり適していません。(キャッスル、log4netなど)
優れた軽量の代替手段はありますか?
Access/SQLite/VistaDB などの単純なファイル ベースのデータベースのサポートは不可欠です。
理想的には、.NET アセンブリのみを参照する単一のアセンブリに含まれるものです。ボーナスである .NET Framework 2.0 または 3.0 のみが必要な場合。
NHibernate は、すべての依存関係があるため、私たちの環境にはあまり適していません。(キャッスル、log4netなど)
優れた軽量の代替手段はありますか?
Access/SQLite/VistaDB などの単純なファイル ベースのデータベースのサポートは不可欠です。
理想的には、.NET アセンブリのみを参照する単一のアセンブリに含まれるものです。ボーナスである .NET Framework 2.0 または 3.0 のみが必要な場合。
大規模 - https://github.com/robconery/massive
また
ペタポコ - https://github.com/toptensoftware/petapoco
どちらも、GAC にあるものを除いて依存関係のない単一の .cs ファイルです。
(完全開示、ペタポコは私が書いたものです)
優れたパフォーマンスを発揮し、単一のアセンブリのみを必要とする軽量の ORM については、Mindscape のLightspeedを試してみませんか。オープンソースではありませんが、ソースが入手可能で、手頃な価格です。ほとんどの ORM が十分に採用されていない場合のリスクは、もちろん、品質とサポートのレベルです。..現時点でのネットスペース。
NHibernate の依存関係が嫌いなため、ロギング フレームワークやキャッスル プロジェクトのファセット (IoC、モノレールなど) は必要ないように思えます。NHibernate の最低限の要件 (log4net と私が信じている Iesi コレクション、および城プロジェクトからの動的プロキシ?) とそれらに対して ILMerge を実行して、それらを単一のアセンブリに統合します-少し手間がかかるかもしれませんが、それほど難しくありません-または、代わりにソースコードをプルすることもできますこれらのプロジェクトのそれぞれを、組織のために維持する NHibernate のカスタム ビルドに変換します。これは、プロジェクト/組織に必要のない機能を削除します。思ったほど難しい/厄介ではありません。私たちはORMの恩恵を受けたかったのですが、しかし、配布されたファイル/インストーラーのサイズを縮小する必要がありました。
また、おそらくNhibernateベースのソリューションについて「重すぎる」と感じていることを説明できますか...私の経験では、一部に比べてかなり軽量なORMフレームワークです。
このリストに加えて、Dapper (StackOverflow 自体のために作成され、使用されます) も参照できます。
一般的に言えば、データベース バックエンドが .net で動作するには、そのための ADO.Net プロバイダーが必要です。
MS Access (Jet) の場合、プロバイダーは .net と共に出荷されます。SQLite には、自己完結型の ADO.Net プロバイダーがあります。
データ アクセス レイヤー lib に関しては、ADO.Net を抽象化する必要がある場合は、次のようにします。
これらはすべて、フレームワーク 2.0 以降でうまく機能します。
基本的に、あなたが選択します(そして多くの選択肢があります)
- ActiveRecord - バックグラウンドでnhibernate.dllを使用しますが、設定は属性を通じて行われます。
nhibernate - Subsonic
- CoolStorage.NETのライト バージョンのようなものです- 私は小さなプロジェクトでよく使用しました。データベースの数でうまく機能します
これが私がお勧めする選択肢の大きなリストです:
それらの4つは最も軽いものです。Subsonic、ActiveRecordなどは大規模なシステムを対象としています。これらは小規模なシステムでは正常に機能しますが、(少なくともActiveRecordの場合)小規模なシステムでは依存関係の膨大なリストと過剰な機能があります。Lightspeedを使用すると、8オブジェクト未満のものはすべて小さなシステムであり、広く採用されているNHibernateを使用するだけでスケーリングには適していますが、短期的には意味がありません。ORMとコンシューマーの間にレイヤーを配置することで機能します。とにかくその周り。
LINQ to SQL は、適切に使用すれば、「ヒーブ」ORM システムの優れた代替手段になる可能性があります。