2009-08-31 10 views
0

私はC#言語でASP.NET 2.0アプリケーションを開発中です。プロシージャをコールするか、コードの背後で処理する方が良いでしょうか?

シナリオ: 私はデータベースからデータを取得し、それをグリッドビューにバインドする必要があります。

ケース1: 私は、最終結果を得るためにストアドプロシージャを使用することができます(基本クエリから得られた結果とこの結果セットの操作を実行するために)。

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

どのケースが良いプログラミング方法であるか教えてください。

おかげ ルパ

答えて

0

あなたは、この目的のためにDataSetオブジェクトを使用することができます。あなたは

のDataSource ropertyを使用してGridViewのデータソースのを割り当てることができますストアドプロシージャを呼び出し、DataAdapter.Fill方法と

を使用してDataSetオブジェクトを塗りつぶします。

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

1

「最終結果」を得るためにどのような操作を実行しますか?データベース側で大量の作業を実行するのは、大量のデータを取り込んでから、データベース側で処理できた操作(またはそれ以上の悪化、主要なフィルタリング)を実行するよりも、一般的に高速です。

2

データベースにできるだけ近づけたいデータを大量にフィルタリングしているのであれば、基本クエリから返されるデータの量などの状況に左右されます。

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

しかし、コードやデータセットでのフィルタ処理が快適になるかもしれません。

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

パフォーマンスはおそらく、ほとんどの状況でデータベースの方が良いと言います。

0

私のオプションは、繰り返しのストアドプロシージャで行う方が良いです。データが高くなると、procがより良いオプションになります。

0

この質問には、ベストプラクティスについて少しお読みください。あなたの状況では、あなたにとって最適なプラクティスと達成しようとしているプラ​​クティスを定義するのに役立つプログラミングモデルを検討するかもしれません。

この場合、コードの単体テストを書くような質問はいくつかありますか?懸念の分離はあなたの問題ですか?あなたのプログラムはどれくらいの大きさになるでしょうか?

Model View Presenterのようなベストプラクティス(時にはSupervising Controller or Passive View)やASP.NET MVCのようなASP.NETのためのより構造化されたフレームワークを見てみると、ベストプラクティスの方がはるかに簡単であることが分かります。

0

私はケース1を使用しますが、データの反復処理を避け、すべての操作を1つまたは2つのクエリで実行しようとします。 SQLサーバーデータベースに対して反復処理を行うことは迅速ではなく、データから離れるほど遅くなります(GUIで反復処理を行い、データベースを呼び出すビジネスレイヤーを呼び出すなど)。

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

  1. tempraryテーブル
  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 [email protected] 
    
    
    UPDATE #temp1 --do any operation on the temporary table 
    
    SELECT myCol FROM #temp1 --apply any additional filter or operations 
    GO 
    
    と同様に、呼び出し元のアプリケーション

への一時的なテーブルの上にいくつかの集合演算を実行することになり

関連する問題