2009-03-05 11 views
1

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

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

私のクラスの設計では、選択のためのQuery()関数と、挿入/更新/削除のためのExecute()関数がありました。 (より多くのパブリック関数を持つことには反対しませんが、自分よりも先に進めたいとは思っていませんでした)。どちらの関数も、SQLストリングとソートされたリストをパラメーターとして取ります。 SQL文字列の中でパラメータ名を見つけ、等号の前を見ることで列名を得ることができます。同様に、一度に1つのテーブルだけで作業するため、クエリが挿入、更新、または削除のときにテーブル名を取得するのはかなり簡単です。 1つ以上の結合、内部の選択などがある可能性があるため、大きな問題が選択されています。

私は間違った方向に向かっていますか?私がそれを考えていないものは、私の人生を楽にすることができますか?誰かが何らかのアドバイスを提供できる任意の言語でこのためのクラスを書いていますか?

答えて

5

ホイールを改造しないでください。あなたのORMニーズに合わせてnHibernateまたはLINQToSQL(またはLINQToEntities)を調べてください。

+0

パラメータ化クエリもサポートする古いODBC APIはもちろんですが、 –

1

あなたがうまくいきました、特にこれがaspnetへの最初の挑戦である場合には、もう試してみてください。

SubSonicの提案を追加しましたが、これはおそらくnHibernateよりも軽いでしょうが、実際はプロジェクトの性質に依存していて、両方とも素晴らしいツールであり、 。

0

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

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

1

これはASP.NETの最初の経験であるため、LinqからSQLを調べることをお勧めします。 some tutorialsを実行して、Linqクエリをコーディングする前にどのように動作するかを確認してください。

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

幸運

関連する問題