これに出くわしました:
http://www.eggheadcafe.com/articles/adonet_source_code_generator.asp
私はすべてのストアド プロシージャのクラスを作成するのが好きではないので、これが正しい解決策であるかどうか、または ASP.net 2.0 プロジェクトのエンタープライズ ライブラリを使用するかどうか疑問に思っています。
これに出くわしました:
http://www.eggheadcafe.com/articles/adonet_source_code_generator.asp
私はすべてのストアド プロシージャのクラスを作成するのが好きではないので、これが正しい解決策であるかどうか、または ASP.net 2.0 プロジェクトのエンタープライズ ライブラリを使用するかどうか疑問に思っています。
すべてのストアド プロシージャに対してクラスを作成するべきではありません。データベースとのやり取りを処理する方法はいくつかあります。そこにある主要なフレームワークをよく見て、どれが最も適しているかを判断する必要があります。Castle Project ソリューションは素晴らしく、nHibernate ( nHibernate )に依存しています。LINQ は、Mircrosoft ( LINQ Project ) による同様の製品です。これらのソリューションはどちらも完全な ORM フレームワーク (オブジェクト リレーショナル マッピング) であり、動的 SQL を生成してデータベース内のオブジェクトを永続化します。それぞれに独自の癖があり、特定の方法でオブジェクトを構成するのが好きです。システムが使用する SQL を管理したくない場合は、これらのアプローチのいずれかをお勧めします。
私はデータベースのバックグラウンドを持っており、SQL をもう少し制御することを好みます。特に、対話をストアド プロシージャで処理するのが好きです。これにより、最適化のために SQL をより適切に制御できるようになりますが、データベースのセキュリティをよりフレンドリーな方法で管理するのに役立ちます。このアプローチに対応するには、iBatis ( iBatis ) のようなものをお勧めします。iBatis は完全な ORM ではなく、単純な SQL マッパーです。私のアプローチの欠点は、より多くのコード (SQL) を記述する必要があることですが、トレードオフは気にしません。
どの時点でテーブルから構成されるデータ セットが必要になるか、SQL でストアド プロシージャを使用してデータ セットを生成するかどうか、またはビジネス ロジック レイヤーでこれらを処理するかどうかを決定する必要があります。Dr8k が言うように、nHibernate は SQL を作成しますが、nHibernate には学習曲線があります。ORM は、データの取得方法を制御します。環境と DBA の快適さのレベルによっては、他の問題を克服する必要がある場合があります。
SQL に慣れている場合は、SubSonicと呼ばれる別のツールがあります。このツールは、アクティブ レコードとしてラッパーを作成し、ストアド プロシージャも使用できるようにします。LINQ を使用できない場合に使用できる流暢なインターフェイスを備えた優れたクエリ ツールもあります。
フレームワーク 3.5 にアップグレードする可能性はありますか? もしそうなら、LINQ to SQL と Entity Framework を見てください。これで多くのことを達成できます。
そうでない場合は、サードパーティのライブラリに縛られない標準コードを生成する限り、確かに使用できます。私の職場には、これに似た独自のジェネレーターがあり、うまく機能しますが、まもなく LINQ to SQL に移行します。
C# クラスでデータベース テーブルをラップする方法は多数あります。リンクしたものと Entity Framework のどちらかを選択する前に、いくつかの代替案を調査することをお勧めします。
このアプローチを正確に説明する「アクティブ レコード パターン」と呼ばれるソフトウェア パターンがあります。テーブルごとに 1 つの C# クラスがあり、Customer.GetById()、Customer.Save() などの読み込み/保存メソッドがあります。
ASP.NET 2.0 については、Castle プロジェクトの ActiveRecord 実装と、ドラッグ アンド ドロップ インターフェイスを使用してテーブルのクラス ラッパーを生成できるActiveWriterというサード パーティの Visual Studio プラグイン ツールを確認してください。