OleDb とストアド プロシージャをサポートする優れた .NET ORM フレームワークはありますか?
質問
私たちのシステムの典型的なストアド プロシージャは、約 20 個ほどのパラメータを受け入れます。これらのストアド プロシージャをリファクタリングする可能性もありません。私は基本的に、これらの SP を (データベース プロバイダーに依存しない) "Command" オブジェクトにラップし、SP パラメーターに対応するパブリック プロパティを持つ独自のコード ジェネレーターを作成することにしました。それは機能しますが、サードパーティの実証済みのソリューションの方が良いと思います。
誰か何かお勧めできますか?OleDB とストアド プロシージャをサポートするものは見つかりませんでした。
編集:SQL 6.5 のため、OleDb 接続が必要です (信じられないかもしれませんが)。ADO.NET は SQL 6.5 に接続できません。また、これは .NET 2.0 アプリケーションなので、LinqToSql は役に立ちません。
編集2:私はすでに nHibernate と iBatis を試しました。どちらも私のニーズには合いません。最後に nHibernate を試したときは、SP が結果セットを返す必要がありました。私のSPの場合はそうではありません。どちらの場合も、パラメーターを手動で指定する必要があります。
解決
私は 3 つの ORM レイヤーを使用した経験があります。
3 つはすべて無料で、OleDb 接続とストアド プロシージャをサポートしています。
Subsonic - これは Web アプリケーション専用に構築されました。これは、Ruby On Rails が行うことの多くを模倣しています。彼らは移行を追加しただけです。サブソニックは3つの中で最も軽いです。Winforms で使用するのは少し難しいですが、思ったほど難しくはありません。コードを生成し、データベース設定を維持するための優れた UI ツールが付属しています。これは、さまざまなデータベースをサポートしている唯一のものです。SQLite、SQL Server CE、SQL Server で使用しました。
CSLA.NET - これは、ほとんどすべての新しい優れた .NET テクノロジを処理できます。作成者が WCF、WPF、Silverlight のサポートを追加したばかりであることは知っています。これは、エンタープライズ タイプのアプリで非常に負荷のかかる作業が必要な場合に使用します。これには、無制限のオブジェクトの取り消し、コレクションを読み取り専用としてマークする機能、オブジェクトを任意の場所に移動および固定する機能など、多くの優れた機能があります。これは、JBoss が Java 上で行うことに最も近いものです。
Net Tiers - 私はあまり好きではありませんが、仕事はうまくいきます。CSLAよりは軽いですが、それでもサブソニックよりは重いです。
また言及したいと思います NHibernate, 城活動記録, 、 そして Microsoft エンタープライズ ライブラリ. 。ただし、私はこれらについてあまり経験がありません。
他のヒント
私が聞いたところによると、ADO .NET Entitry Framework はストアド プロシージャをほとんどサポートしていないと聞きました...LINQ2SQL を機能させることはできますが、何らかのプロキシ クラスが必要になる場合があります...Hibernate と IBatis が最善の策です...
代替案:
- LINQ to SQL
- ADO.NET エンティティ フレームワーク
- NHibernate
- あなたの選択 )