2009-08-31 2 views
0

나는 C# 언어로 ASP.NET 2.0 응용 프로그램을 작성 중입니다.프로 시저를 호출하거나 코드 배후에서 처리하는 것이 좋습니다.

다음 중 가장 좋은 방법은 누구에게 말해 줄 수 있습니까? 시나리오 : 데이터베이스에서 데이터를 가져와 그리드보기에 바인딩해야합니다.

사례 1 : 최종 결과를 얻기 위해 저장 프로 시저 (기본 쿼리에서 얻은 결과를 iteraing하고이 결과 집합에 연산을 수행)를 사용할 수 있습니다.

case 2 : 결과 (기본 쿼리에서 가져옴)를 얻고 코드 숨김 파일에서 반복 및 연산을 수행 할 수 있습니다.

어느 프로그램이 좋은 프로그래밍 방법인지 알려주십시오.

감사 루파

답변

0

당신은이 목적을 위해 DataSet 개체를 사용할 수 있습니다. 저장 프로 시저를 호출하고 DataAdapter.Fill 방법과

당신이

데이터 소스 roperty를 사용하여있는 gridview의 데이터 소스를 할당 할 수 있습니다를 사용하여 DataSet 개체를 입력합니다.

데이터 테이블을 반복해야하는 경우 데이터 세트의 해당 데이터 테이블을 사용하여 수행 할 수 있습니다.

1

"최종 결과를 얻으려면 어떤 유형의 작업을 수행 하시겠습니까?" 데이터베이스 측에서 대량의 작업을 수행하는 것은 일반적으로 많은 양의 데이터를 가져 와서 데이터베이스에서 처리 할 수있는 조작 (또는 악화, 주요 필터링)을 수행하는 것보다 빠릅니다.

2

나는 가능한 한 데이터베이스에 가깝게 수행하고자하는 데이터를 많이 필터링하는 경우 기본 쿼리에서 반환되는 데이터의 양과 같은 상황에 따라 달라질 것이라고 생각합니다.

또한 저장된 proc을 사용하면 응용 프로그램을 다시 배포하지 않고도 쿼리를 변경할 수 있습니다.

그러나 코드 나 데이터 세트에서 필터링을 더 편하게 할 수 있습니다.

데이터베이스 서버가로드 된 경우 응용 프로그램의 필터링 속도가 빨라질 수 있습니다.

성능은 아마도 대부분의 경우 데이터베이스에서 더 나아질 것이 좋습니다.

0

내 옵션은 반복을위한 저장 프로 시저에서하는 것이 더 좋습니다. 데이터가 높으면 proc이 더 나은 옵션입니다.

0

이 질문에 대한 모범 사례를 조금 읽으면 더 잘 대답 할 것입니다. 귀하의 상황에서 당신에게 가장 적합한 몇 가지 실천을 정의하고 달성하고자하는 것을 정의하는 데 도움이되는 프로그래밍 모델을 살펴보십시오.

이 경우 코드에 대한 단위 테스트를 작성하는 것과 같은 몇 가지 질문이 있습니까? 우려의 분리가 당신에게 문제입니까? 프로그램의 규모는 얼마나됩니까?

Model View Presenter과 같은 모범 사례 (때로는 Supervising Controller or Passive View) 또는 ASP.NET MVC와 같은 ASP.NET 용으로보다 구조화 된 프레임 워크로 보지 않는 것이 좋습니다. 여기서 모범 사례를 따르는 것이 훨씬 쉽습니다.

0

사례 1을 사용 하겠지만 데이터를 반복하지 않고 모든 작업을 하나 또는 두 가지 쿼리로 수행하려고합니다. 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 
    
    처럼 호출 응용 프로그램

임시 테이블에 몇 가지 설정 작업을 수행 할 것