-1

clsConnection選択、挿入、更新、削除などのすべてのSQLクエリを実行するために利用できるクラスを持つことを考えています....かなり良いです。

しかし、それはどれほど完全でしょうか?どのように?

4

5 に答える 5

3

AB Kolanが提案したように LINQ to SQL を使用できます。または、学習曲線の時間がない場合は、Microsoft Enterprise Library Data Access Application Blocks を参照することをお勧めします。

于 2009-07-01T12:14:11.773 に答える
1

エンタープライズ ライブラリから DAB (SQlHelper) を使用できます。これには、データベース操作に必要なすべてのメソッド/プロパティが含まれています。独自のコードを作成する必要はありません。

または、LINQ や NHibernate などの ORM を使用することもできます。

于 2009-07-01T12:13:55.643 に答える
0

データアクセスを行うとき、私はそれを2つの層に分割する傾向があります-純粋にテスト容易性のためです。

キー値を取得し、アトミック挿入、更新、選択削除などからの非常に低レベルのデータ収集を管理するためのロジックを完全に分離します。

このようにして、データベースからの読み取りと書き込みを必要とせずに、低レベルのデータ収集のロジックを非常に簡単にテストできます。

このようにして、クラスの1つのレイヤーが個々のテーブルへの書き込みを効果的に管理し、もう1つのレイヤーがルックアップなどからデータを取得してこれらのテーブルにデータを入力することに関係します。

これらの2つのdalレイヤーの上にあるビジネスロジックレイヤーは、明らかに実際のビジネスロジックを管理します。これは、データ構造が現実的に可能な限りビジネスロジックから分離されていることを意味します...つまり、dalを置き換えても、痛みを感じることはありません。そんなに。

あなたがうまくいくことができる2つのルートは

ADO.Net

これは、完全に制御できるため非常に強力ですが、同時に時間がかかり、繰り返しを感じることがあります。また、その古い学校なので、ほとんどの人はそれに飽きています。したがって、すべてのlinq2sqlコメント。これを使用して、DBへの接続を開き、それに対してコマンドを実行します。

基本的に、データベースとインターフェイスするクラスを作成し、これを使用してデータベースにあるストアドプロシージャを使用します。最下位レベルのクラスは、基本的に、コマンドとそのパラメーターを実行してから、戻り値を入力します。

およびLinq2SQL

これはクールなシステムです。基本的に、コードで強く型付けされたsqlesqueステートメントを許可する代わりに、90%のケースでSPを冗長にします。時間を節約し、信頼性を高めます。私はまだこれで2つのdalレイヤーを使用していますが、プロパティを使用して基本クラスを生成し、実際にアトミック操作を実行する機能を追加するという事実を利用しています。次に、上位レベルは、複数のオブジェクトの読み取りおよび書き込みロジックを実装します。

最も優れた点は、linq 2 sqlを使用してコレクションのコレクションを簡単に生成し、1つのコマンドですべての挿入と更新を書き込むことができることです(実際には、別々に行う傾向があります)。

L2Sは、一度試してみると強力ですが、ado.netからオブジェクトのコレクションを生成することは、特に何度も何度も行う必要がある場合に比べて、非常に苦痛になる可能性があります。

もう1つの選択肢は、Linq2エンティティです。

リンクされたサーバーが原因でこれに問題が発生しました。また、ビューがあまり好きではなく、テーブルにpkや制約がない場合は、人生もあまり好きではありません。しばらくはそれを避けてください。

もちろん、データベースからデータを読み書きするためのジェネリッククラスが必要な場合は、問題を解決するのではなく、複雑さを増すことになると思います。本当にあなたはできません;コードを書くことを避けられません;)-データアクセスの各ビットはユニークです、ado.netまたはl2sを越えてそれを一般化しようとすると本当に問題が発生します。

于 2009-07-01T12:41:04.667 に答える
0

ADO.NET SqlConnection(SqlCommandタイプのプロパティが既にアタッチされている)を書き直しているように思えます。または、LinqからSQL(または、Linqからエンティティ)。

于 2009-07-01T12:10:08.553 に答える
0

小さなプロジェクト:シングルトンクラス(DatabaseConnectionなど)は、実行している作業に適している場合があります。

大規模プロジェクト:エンタープライズライブラリにはいくつかのデータベースコードがあります。NHibernateまたはエンティティフレームワーク、おそらく。

あなたの質問は、これについて非常に明確な答えを与えるほど具体的ではありませんでした。

于 2009-07-01T12:46:59.070 に答える