私は現在、小さなASP.NET/MS-SQLショップに勤務しています。私のチームは、私たちの開発(およびバグ修正)時間がADO.NETデータベースアクセスコードに費やされていることに気付きました。私たちは、DataTable/SQLDataReaderの結果を適切なビジネスオブジェクトにマッピングするプロセスを容易にするソフトウェアソリューションを探しています。列名を手動で指定して結果をキャストすることは悪夢になりつつあります(特に、スキーマの変更が伴う場合)。ASP.NETでストアドプロシージャを使用するより良い方法はありますか?
これまでのところ、Entity Framework(そしてそれほどではないがLINQ-to-SQL)は、このプロセスをかなり自動化する唯一のソフトウェアでした。ストアドプロシージャをモデルに追加し、自動生成された複合型を返すだけです。データベースからモデルを更新する機能も大きなプラスです。
多くのプロジェクトをEntity Frameworkに移行する前に、私たちが検討すべき他のオプションがあるかどうか疑問に思っていました。私のチームは、ORMライブラリやコードジェネレータの間に強い好みはありません。
役立つかもしれない基準の一部:
- (CRUDを含む)すべてのデータアクセスは、SQL Serverの2008R2上のストアドプロシージャを介して実行されます。 「ストアドプロシージャの使用を停止する」と答えないでください。 ORMはわれわれの状況では非常に意味をなさないでしょうが、私たちのDBAの決定はプログラミングチームの判断よりもはるかに重要です。
- ソフトウェアは、SPROCのパラメータ名を解決し、結果を強く型付けされたオブジェクトに変換するのに役立ちます。
- 私たちは非常に小さな予算の学術機関です。今年はかなりの予算を費やしました(Resharperライセンスを取得しました - ありがたいことに、安い価格で)、ひどい値札の商用ソリューションが出ています。
- 私たちはGPLライブラリを使用することはできません。 LGPL/BSDまたはこれに類するものはすべて問題ありません。
- 私たちは開発者にとってより簡単なものにしようとしています。列/型情報をC#から手作業で書かれたXMLに移動しても、実際には簡単にはできません。可能な限り自動化されたものを探しています。
「ORMはわれわれの状況では非常に意味をなさないだろうが、私たちのDBAの判断は、プログラミングチームの判断よりもはるかに優れている」 - それはビジネス上の決定なのだろうか? –
** Entity Framework 4 **(.NET 4)を使用する - ストアドプロシージャをサポートしています。 (他のほとんどのORMもそうしようとし始めていません....) –
@marc_s:どのORMにはストアドプロシージャをサポートしていないと思いますか?私は頭の上から重要なものを考えることができません。 –