2010-02-24 8 views
2

.net에서 데이터 세트를 다시 사용하는 것이 좋은가요? 내가 의미하는 것은 ... 나는 데이터 집합의 새로운 인스턴스를 생성하는 루프에서 뭐하는 거지 무슨있는 gridview에게.net에서 데이터 세트 재사용

For Each row in GridView 
    ds = New DataSet 
    ds.ReadXML(GetStream(row.Field)) 
    ... export the dataset 
Next 

루프 다음과 같은 코드가 있습니다. ds.Clear()를 호출 한 다음 ds.ReadXML()을 통해 다시 사용할 수 있습니까?

답변

2

의미가 다릅니다. DataSet.Clear은 모든 데이터 (행)를 삭제하지만 스키마 (테이블 및 관계)는 유지합니다.

샘플에서는 ReadXml 메서드 (스키마뿐만 아니라 데이터도 읽을 수 있음)에서 테이블을 만드는 것처럼 보입니다.

DataSet.Clear은 모든 Xml 문서가 동일한 스키마를 갖고 있지만 New을 사용하면 더 강력하고 사용자의 의도를 더 잘 표현할 수 있습니다.

그러나 다음 샘플 에서처럼 데이터 만 읽는 경우 반복적으로 스키마를 생성하지 않으므로 DataSet.Clear을 선택하는 것이 좋습니다.

ds = New DataSet 
... code to create the schema (Tables, Columns, Relations) 

For Each row in GridView 
    ds.ReadXML(GetStream(row.Field), XmlReadMode.IgnoreSchema) 
    ... export the dataset 
    ds.Clear 
Next 
+0

필자는 http://www.pcreview.co.uk/forums/thread-1242477.php에서 ReadXML()에 대한 호출이 실제로로드되기 전에 데이터 셋을 재설정한다고 읽었습니다. –

2

다른 성능 고려 사항과 함께 재사용을 계량화하십시오. 일반적으로 필자는 필 요할 때까지 이와 같은 최적화 작업을 수행하지 않습니다. 그리고 필요한 경우에만 번호를 부여해야합니다.

+0

이 특별한 경우에는 GridView에서 200 개의 행을 반복하고 평균 2MB의 DB에서 데이터 집합을 가져와야한다고 동의합니다. –

+0

각 레코드에 해당됩니다. –

+1

사실이라면 데이터를 가져 오는 것이 프레임 워크가 새로운 빈 DataSet을 제공하는 데 걸리는 시간보다 훨씬 더 비쌉니다. var ds = new DataSet()은 10 밀리 초보다 적게 소요되므로 데이터 가져 오기 작업이 오랜 시간이 걸릴 수 있으므로 새 대 Clear() 최적화는 그만한 가치가 없습니다. – NerdFury

1

당신이 할 수있을 수도 있지만, 객체 생성이 너무 저렴하고 부작용의 위험이없는, 새로운 객체를 생성 할 수없는 어떤 이유가 없습니다.