/ /パラメータ化されたクエリをサポートするデータベースクラスを作成する方法 - asp.net、ado.net、class-design

パラメータ化されたクエリをサポートするデータベースクラスの作成方法 - asp.net、ado.net、class-design

私は以前の古典的なASPプログラマであり、時には私の最初のASP.NETアプリケーションを書くPHPプログラマー。私はずっと改良されたADO.NET関数を愛していますが、私はデータベースクラスを書く必要性を感じています。部分的には、データベースと実際にやりとりするコードを統合し、部分的には繰り返しのような感じを減らしたいと思っています。

単純なデータベースクラスは難しくありませんが、私は、パラメータ化されたクエリをセキュリティ対策の1つとして使用しています。これをクラスに組み込む方法には苦労しています。私はテーブルとカラム名を渡すことでデータベースのカラムのデータ型を返す関数を書いたが、SQLクエリからテーブルとカラム名を得る堅牢な方法を考えることはできない。

クラスのための私のデザインは、クエリ()挿入/更新/削除のためのExecute()関数が含まれています。 (より多くのパブリック関数を持つことには反対ではありませんが、自分自身よりも先に進めたいと思っていませんでした)両方の関数は、SQL文字列とSortedListを引数として取ります。 SQLの文字列と等号の前を見て、同様に、一度に1つのテーブルでしか作業しないため、クエリが挿入、更新、または削除のときにテーブル名を取得するのはかなり簡単です。なぜなら、1つまたは複数の結合、内部選択などが存在する可能性があるからです。

間違った方向に向かいましたか?私がそれを考えていないものは、私の人生を楽にしたり難しくしたりすることができますか?

回答:

回答№1は5

ホイールを再開発しないでください。 nHibernate または LINQToSQL (または LINQToEntities)あなたのORMの必要性のために。


回答№2の場合は1

第二に、あなたのために働く試行錯誤の輪を見つけるための呼びかけ、特にこれがaspnetへの最初の進出であるなら、あなたを忙しく保つことがたくさんあるでしょう。

に提案を追加する 超音速これはおそらくnHibernateより軽いでしょうが、実際にプロジェクトの性質に依存していて、両方とも素晴らしいツールであり、両方とも過去数年間にわたって数ヶ月の仕事を節約してくれました。


回答№3の場合は1

私はこれがASP.NETの最初の経験であるため、LinqからSQLを調べることをお勧めします。行う いくつかのチュートリアル Linqクエリをコーディングしようとする前に、どのように動作するかを感じるようになります。

私はLinqを使用しないと考えることができる唯一の理由SQL Serverを使用していない場合(または現在または将来、他のDBをサポートする必要がある場合)、または何らかの理由で.NET 3.5ランタイムを使用できない場合があります。

がんばろう


回答№4の場合は0

あなたの "シンプルなデータベースクラス"は、それを使用する必要があるクラスからあまりにも多くの詳細を隠しているように私に聞こえる。

私はSqlCeEngineを含むクラスを作成しました"LookupDescription(String Code)"のようなメソッドを公開する...私はそのようなデザインはあなたが探しているべきものだと思う。そして、LINQを調べることを検討してください。それは提供することがたくさんある。