메서드 Fill는 데이터 원본의 테이블 열과 행으로만 DataSet을(를) 채웁니다. 제약 조건은 일반적으로 데이터 원본에 의해 설정되지만, 메서드 Fill는 기본적으로 이 스키마 정보를 DataSet에 추가하지 않습니다. 데이터 원본에서 기존 기본 키 제약 조건 정보를 DataSet 제약 조건을 반영합니다. 외래 키 제약 조건 정보는 포함되지 않으므로 DataTable 제약 조건에 나와 있는 대로 명시적으로 만들어야 합니다.
스키마 정보를 데이터로 채우기 전에 스키마 정보를 DataSet 추가하면 기본 키 제약 조건이 DataTable의 개체에 포함됩니다. 따라서 추가 DataSet 채우기 호출이 이루어지면, 기본 키 열 정보를 사용하여 데이터 원본의 새 행이 각 DataTable의 현재 행과 일치하도록 하고, 테이블의 현재 데이터는 데이터 원본 데이터로 덮어씁니다. 스키마 정보가 없으면 데이터 원본의 새 행이 DataSet에 추가되어 결국 행이 중복됩니다.
참고 항목
데이터 원본의 열이 자동 증가로 식별되는 경우, FillSchema 메서드 또는 Fill 메서드에서 MissingSchemaAction를 사용하면, AutoIncrement 속성이 true으로 설정된 DataColumn 열을 생성합니다. 그러나 AutoIncrementStep 값과 AutoIncrementSeed 값을 직접 설정해야 합니다. 자동 증분 열에 대한 자세한 내용은 AutoIncrement 열 만들기를 참조하세요.
FillSchema을/를 사용하거나 AddWithKey로 MissingSchemaAction을/를 설정할 경우, 기본 키 열 정보를 확인하기 위해 데이터 원본에서 추가 처리가 필요합니다. 이러한 추가 처리로 인해 성능이 낮아질 수 있습니다. 디자인 타임에 기본 키 정보를 알고 있으면 기본 키 열을 명시적으로 지정하여 최상의 성능을 얻을 수 있습니다. 테이블의 기본 키 정보를 명시적으로 설정하는 방법은 기본 키 정의를 참조하세요.
다음 코드 예제에서는 using DataSet에 스키마 정보를 추가하는 방법을 보여줍니다.
Dim custDataSet As New DataSet()
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers")
custAdapter.Fill(custDataSet, "Customers")
var custDataSet = new DataSet();
custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers");
custAdapter.Fill(custDataSet, "Customers");
다음 코드 예제는 Fill에 스키마 정보를 추가하기 위해 메서드의 MissingSchemaAction.AddWithKey 속성을 어떻게 사용하는지 보여줍니다.
Dim custDataSet As New DataSet()
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
custAdapter.Fill(custDataSet, "Customers")
var custDataSet = new DataSet();
custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
custAdapter.Fill(custDataSet, "Customers");
여러 결과 집합 처리
DataAdapter
SelectCommand에서 반환된 여러 결과 집합이 발견되면 DataSet에 여러 테이블이 만들어집니다. 테이블에는 "Table0" 대신 0부터 시작하는 Table 증분 기본 이름이 Table으로 지정됩니다. 테이블 이름이 메서드에 FillSchema 인수로 전달되는 경우 테이블에는 "TableName0" 대신 TableName의 TableName 0부터 시작하는 증분 이름이 지정됩니다.
참고 항목
FillSchema 여러 결과 집합을 OleDbDataAdapter 반환하는 명령에 대해 개체 메서드를 호출하면 첫 번째 결과 집합의 스키마 정보만 반환됩니다.