2009-10-19 2 views
2

DataTable.Copy()를 호출하지 않고 둘 이상의 DataSet에 DataTable을 추가하고 싶습니다. DataTable을 복사하기 만하면 메모리에있는 데이터의 양이 두 배로 늘어나서 변경 사항을 관리하게됩니다. 세부 테이블에 둘 이상의 마스터가있을 수있는 세부 테이블 솔루션을 구현할 때이 문제점이 발생합니다.ADO .NET - 하나 이상의 DataSet에 DataTable 추가

도움이 될 경우이 스 니펫과 그에 따른 얼굴을 고려하십시오.

DataTable table1 = GetDataTable(); // 100 rows of data 
DataTable table2 = table1; 

DataSet1 dataset1 = new DataSet(); 
DataSet2 dataset2 = new DataSet(); 

dataset1.Tables.Add(table1); 
dataset2.Tables.Add(table2); // fails because table2 already exists in dataset1 :-(

어떤 제안이 있습니까? 감사! 데이터 집합이 모바일 및 독립적으로 업데이트 할 수 있도록 설계되어 있기 때문에

답변

1

당신은 복사하지 않고이 작업을 수행 할 수없는 결과로, 그들은 데이터 자체 데이터에 단지 참조를 ... 있어야합니다

+0

죄송합니다. DataTable은 참조 유형이므로 의미가 없습니다. 행도 마찬가지입니다. –

+0

Henk ... 단어 참조의 내 사용은 참조 유형과 값 유형 간의 .Net 구분과는 아무런 관련이 없습니다. 이런 맥락에서, 기술적으로 DataSet 자체는 참조가 아닙니다 .... 데이터 세트를 보유하고있는 변수 또는 참조 변수가 참조 변수이고 데이터 세트가 참조 유형 인 경우에도 ... DataSet 자체 힙에서) 데이터베이스의 데이터에 대한 "참조"가 아니며, 그 데이터의 사본이며 그 안에 모든 데이터를 포함합니다. –

3

DataTable 클래스는 DataSet 속성을 가지므로 의도적으로 (최대로) 1 DataSet에 속하도록 설계되었습니다. 마찬가지로 DataRow에는 Table 속성이 있습니다.

DataTableChildRelationsParentRelations 속성을 갖는다. Datatable이 둘 이상의 DataSet에 속할 수 있다면 모호합니다. 모든 관계 컬렉션은 DataSet에 속하며 관계 이름은 1 DataSet에서만 고유하게 적용되기 때문에

DataSets간에 테이블을 공유 할 수없는 이유는 더 많습니다.

관련 문제