0

私はc#言語でASP.NET2.0アプリケーションに取り組んでいます。

誰かが次の最良の方法を教えてもらえますか:シナリオ:データベースからデータを取得し、それをグリッドビューにバインドする必要があります。

ケース1:ストアドプロシージャ(基本的なクエリから取得した結果を反復処理し、この結果セットに対して操作を実行するため)を使用して、最終結果を取得できます。

ケース2:(基本的なクエリから取得した)結果を取得し、コードビハインドファイルで反復と操作を実行できます。

どちらの場合が良いプログラミングの最良の方法か教えてください。

ありがとうルパ

4

6 に答える 6

2

これは、基本的なクエリから返されるデータの量などの状況に依存すると思います。データを大幅にフィルタリングする場合は、データベースのできるだけ近くでデータをフィルタリングする必要があります。

また、ストアドプロシージャを使用すると、アプリケーションを再デプロイせずにクエリを変更できます。

ただし、コードまたはデータセットでフィルタリングを行う方が快適な場合があります。

データベースサーバーがロードされている場合、アプリケーションはおそらくフィルタリングが高速になります。

パフォーマンスは、ほとんどの状況でデータベースを使用したほうがよいことを示している可能性があります。

于 2009-08-31T07:30:43.300 に答える
1

「最終結果」を得るためにどのような操作を行いますか?データベース側で作業の大部分を実行することは、データの負荷を引き継いでから、データベース側で処理できた可能性のある操作(またはさらに悪いことに主要なフィルタリング)を実行するよりも、一般的に高速です。

于 2009-08-31T07:29:52.957 に答える
0

この目的でDataSetオブジェクトを使用できます。ストアドプロシージャを呼び出し、DataAdapter.Fillメソッドを使用してDataSetオブジェクトに入力します。

を使用してグリッドビューのデータソースを割り当てることができます

データソースroperty。

データテーブルを反復処理する必要がある場合は、データセット内の対応するデータテーブルを使用して実行できます。

于 2009-08-31T07:26:05.930 に答える
0

ケース 1 を使用しますが、データの繰り返しを避け、すべての操作を 1 回または 2 回のクエリで実行するようにします。SQL サーバー データベースに対するイテレーションは迅速ではなく、データから遠ざかるほど遅くなります (GUI でイテレーションし、データベースを呼び出すビジネス レイヤーを呼び出すなど)。

これが私がやろうとする方法です。

  1. 一時テーブルを作成する
  2. フィルターを使用して基本クエリからデータを一時テーブルに取得し、可能なすべての操作を実行します。
  3. 基本的なクエリですべての操作を実行できない場合は、一時テーブルに対していくつかのセット操作を実行します
  4. 一時テーブルを呼び出し元のアプリケーションに返します

このような

CREATE PROC myProc @myParam int
AS
CREATE TABLE #temp1(myCol int) 
--only get the required data and apply any operations
INSERT INTO #temp1 (myCol) 
SELECT myCol FROM myTable WHERE myCol2=@myParam 


UPDATE #temp1 --do any operation on the temporary table

SELECT myCol FROM #temp1 --apply any additional filter or operations
GO
于 2009-08-31T13:40:01.130 に答える
0

この質問は、ベスト プラクティスについて少し読むことで、より適切に回答できると確信しています。あなたの状況では、あなたとあなたが達成しようとしていることに最も適したいくつかのプラクティスを定義するのに役立つプログラミングモデルを検討するかもしれないと思います.

この場合、コードの単体テストを書くつもりですか? などのいくつかの質問があります。懸念の分離はあなたにとって問題ですか? あなたのプログラムはどのくらいの大きさになりますか?

Model View Presenterのようなベスト プラクティスに似たアプローチ( Supervising Controller または Passive Viewと呼ばれることもある)や、ASP.NET MVC のような ASP.NET 用のより構造化されたフレームワーク (ベスト プラクティスに従うのがはるかに簡単であることに気付くかもしれません) に目を向けないでください。 .

于 2009-08-31T13:05:52.630 に答える
0

私のオプションは、反復のためにストアドプロシージャで行う方が良いです。データが高くなった場合、procがより良いオプションです。

于 2009-08-31T12:52:43.027 に答える