1

私は今、プログラミング開発において、私が行ってきたボタンの手続き的なものの背後にある基本的なものではなく、オブジェクト指向設計を利用しようとしているところまで来ています。

現在のプロジェクトでは、SQL サーバーの挿入コードを繰り返しコピーして貼り付け、それをプロパティ、メソッドなどを持つクラスに移行しています...

私が立ち往生している問題の 1 つは、データベースへの接続を低く保ちながら、複数のオブジェクト、つまり複数のテーブルに挿入を行う方法です。

手続き的な方法で、ADO.netトランザクションを使用して1つのテーブルに書き込み、次に挿入されたレコードのIDに基づいて、2番目のジョブが完了するまで接続を閉じずに、別のテーブルに追加情報を書き込みました。私はトランザクションを使用するので、後の挿入が失敗した場合、最初の挿入を元に戻すことができ、try、catch を使用して、成功するか失敗するかにかかわらず、最終的に接続を閉じます。

オブジェクト指向の世界でこれをどのように処理しますか?

編集:みんなの答えに感謝します。わかった。ASP.NET/ADO.NET: .NET オブジェクト内で多くのデータベース接続を処理していますか?

4

2 に答える 2

1

うーん、あまり変わらない。

あなたの「オブジェクト」(クラスを使用しているという意味だと思います。これらのクラスのインスタンスは、ビジネス ドメインの「アイテム」を表します) は、それらのトランザクションを気にする必要はありません。つまり、彼らはトランザクションについて知る必要がなく、トランザクションを処理する責任を負うべきではありません。

トランザクションは、別のオブジェクトによって開始および処理する必要があります。ある種の「マネージャー」。このクラスは、トランザクションを開始、コミット、およびロールバックします。
このマネージャーは、フォームなどのアプリケーションで使用します。
アプリケーションは「コンテキスト」を知っているので、これがトランザクションを処理する唯一の正しい方法です。アプリケーションは、DB に対して行う必要があるラウンドトリップの回数を認識しており、トランザクションが持続する時間を認識しています。あなたのオブジェクトはこれを知りません。

于 2009-04-16T14:11:11.057 に答える
0

接続の管理に関しては、しないでください。.Net はそれらのプールを保持し、効率的にリサイクルします。それらを自分でリサイクルしようとすると、実際にはパフォーマンスが低下します。

それ以外は、そのスコープで同じ接続を使用して、挿入、IDの取得、挿入を正しく行っているように聞こえます。

于 2009-04-16T14:10:00.233 に答える