1

私は元古典的な ASP プログラマーであり、時には初めて ASP.NET アプリケーションを作成する PHP プログラマーでもあります。私は大幅に改善された ADO.NET 関数を気に入っていますが、データベース クラスを作成する必要性を感じています。データベースと実際にやり取りするコードを統合したいこともあれば、繰り返しのように感じられるものを減らしたいこともあります。

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

クラスの私の設計は、選択用の Query() 関数と、挿入/更新/削除用の Execute() 関数を持つことでした。(パブリック関数を増やすことに反対しているわけではありませんが、先回りしたくはありませんでした。) どちらの関数も、パラメーターとして SQL 文字列と SortedList を取ります。SQL 文字列でパラメーター名を検索し、等号の前を調べることで、列名を取得できる場合があります。同様に、一度に 1 つのテーブルしか操作しないため、クエリが挿入、更新、または削除の場合、テーブル名を取得するのは非常に簡単です。1 つ以上の結合、内部選択などが存在する可能性があるため、大きな懸念事項は選択です。

私は間違った方向に向かっていますか?私が考えていないことで、私の人生が楽になったり、難しくなったりすることはありますか? アドバイスを提供できる言語でこのクラスを書いた人はいますか?

4

4 に答える 4

5

車輪を再発明しないでください。ORM のニーズについては、nHibernateまたはLINQToSQL (またはLINQToEntities ) を調べてください。

于 2009-03-05T00:58:29.840 に答える
1

特にこれが aspnet への最初の進出である場合は特に、あなたのために機能する試行錯誤された車輪を見つけるための電話を 2 回目にします...あなたを忙しくさせるために他にもたくさんあります.

おそらく nHibernate よりも少し軽いSubSonicの提案を追加しますが、それはプロジェクトの性質に大きく依存します。どちらも優れたツールであり、どちらも過去数年間で数か月の作業を節約してくれました。

于 2009-03-05T01:07:49.520 に答える
1

これは ASP.NET の最初の経験であるため、Linq to SQL を検討することをお勧めします。Linq クエリのコーディングを試みる前に、いくつかのチュートリアルを実行して、どのように機能するかを理解してください。

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

幸運を

于 2009-03-05T01:46:13.717 に答える
0

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

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

于 2009-03-05T01:09:20.920 に答える