NHibernateは、すべての依存関係のために実際に私たちの環境に適していません。 (城、log4netなど)NHibernateへの軽量の代替方法
良い軽量の代替品はありますか?
Access/SQLite/VistaDBなどの単純なファイルベースのデータベースのサポートは必須です。
理想的には、.NETアセンブリのみを参照する単一のアセンブリに含まれるもの。ボーナスである.NET Framework 2.0または3.0のみが必要な場合。
NHibernateは、すべての依存関係のために実際に私たちの環境に適していません。 (城、log4netなど)NHibernateへの軽量の代替方法
良い軽量の代替品はありますか?
Access/SQLite/VistaDBなどの単純なファイルベースのデータベースのサポートは必須です。
理想的には、.NETアセンブリのみを参照する単一のアセンブリに含まれるもの。ボーナスである.NET Framework 2.0または3.0のみが必要な場合。
一般に、データベースバックエンドが.netで動作するには、ADO.Netプロバイダが必要です。
MS Access(Jet)の場合、プロバイダは.netで出荷されます。 SQLiteには、自己完結型のADO.Netプロバイダがあります。データアクセス層のLIB用として
、あなたはADO.Net比べていくつかの抽象化をしたい場合:
だけでなく、フレームワーク2.0とアップで始まるすべてのものを作品。うまく実行され、唯一のマインドスケープからLightspeedを試していない理由を、単一のアセンブリを必要とする軽量ORMのために
基本的には、あなたが選ぶ(と選択肢がたくさんある)
。オープンソースではありませんが、ソースは入手可能であり、合理的な価格です - ほとんど採用されていないORMのリスクは、もちろん品質とサポートレベルです。オープンソースORMの価値はほとんどありません。現時点ではネットスペース。
NHibernateの依存関係が嫌いなので、ロギングフレームワークや城のプロジェクトファセット(IoC、モノレールなど)が必要ないように思えます。NHibernateの最低要件(私が信じるlog4netとIesiのコレクション、そして城のプロジェクトからの動的なプロキシー)とILMergeを実行してそれらを1つのアセンブリに統合する - ちょっとした手間がかかるかもしれませんが、これらのプロジェクトのそれぞれのソースコードは、プロジェクト/組織が必要としない機能を整理する組織のために維持しているNHibernateのカスタムビルドに入っています。これは聞こえるほどハードではなく、これらの行に沿って何かをしましたORMの恩恵を受けたいが、分散したfのサイズを小さくする必要があったプロジェクトiles/installer。
また、Nhibernateベースのソリューションについてあまりにも「重い」と感じるものを説明することは可能でしょうか...私の経験では、かなり軽量なORMフレームワークをいくつかのものと比較しています。代替の
一部:
- ActiveRecord - それはバックグラウンドでnhibernate.dllを使用していますが、設定は、属性を介して行われます。これは、nhibernateのライト版のようなものです
- Subsonic
- CoolStorage.NET - 私は小さなプロジェクトで多くを使用しました。
LINQ to SQLは、適切に使用するならば、 "ヒーブ" ORMシステムの良い代替手段になる可能性があります。
ここでの選択肢、私がお勧めしたいもののbig listです:
もの4は最も軽いものです。 Subsonic、ActiveRecordなどは、大規模なシステムを対象としています。小さなシステムではうまく動作しますが(少なくともActiveRecordの場合)、小さなシステムでは膨大な依存関係と過度の不具合のリストがあります。私はLightspeedと一緒に行くと、8つのオブジェクトの下の何かが小さなシステムであり、広く採用されているので、単純にNHibernateを使用していると言いますが、短期的には意味がなく、ORMと消費者の間にレイヤーを置くことができますとにかくその周り。
そのリンクは期限切れです、新しい場所はhttp://shrinkrays.net/articles/a-look-at-net-object-relational-mapper-orms.aspx –
URLを更新しました –
マッシブ - https://github.com/robconery/massive
または
PetaPoco - https://github.com/toptensoftware/petapoco
の両方がGACに何を除き、依存関係のない単一の.csファイルです。
このリストに追加する
Simple.Dataも見て価値があるかもしれません。 – asgerhallas
任意のORMを単一の.csファイルにすることができます – nawfal
(フル開示は、PetaPocoは、私が書いたものです)、あなたもDapper見(のために書かれたとのStackOverflow自身で使用される)を持つことができます。
非常に良いライブラリ - シンプルさは失われた芸術形態です! –
フル機能のORMを必要とせず、ADO.NET上で高速のデータベースに依存しないデータ層が必要な場合は、オープンソースのNI.Data library (V2)を試してみてください。これは、非常に軽量(ただ一つの小さなアセンブリは、他の依存関係を)すべての標準的なデータ層のインフラ提供:「図書(評価=「RELEX」と呼ばれるその文字列表現のための
var dalc = new DbDalc(new SqlClientDalcFactory(), connectionStr);
すべてです:
その主なコンポーネント(DALCは)ただ1行のコードで初期化。 .NET 2.0ランタイムサポートが必要な場合は、2.0ランタイムで最新のV2バージョンをコンパイルするか、旧バージョン(NI.Data.Dalc、V1)を使用することができます。
LINQ to SQLはSQL Serverのみをサポートしています。ポスターは、ファイルベースのデータベースのサポートが重要であると述べています。 –
LINQ to SQLはファイルベースのデータベースをサポートしています - Microsoft SQL Server Compact、proof:http://pietschsoft.com/post/2009/01/Using-LINQ-to-SQL-with-SQL-Server-Compact-Edition.aspx – too