다음을 통해 공유


데이터 어댑터의 테이블 매핑

업데이트: 2007년 11월

데이터 어댑터는 데이터 소스에서 데이터를 읽을 때 테이블 매핑을 사용하여 대응하는 데이터 집합 테이블에 데이터를 배치할 위치를 결정합니다. 이 매핑은 소스의 열 이름을 데이터 집합 테이블의 열 이름과 연결합니다. 예를 들어, 데이터 소스에서 au_id라는 열의 정보는 데이터 집합 테이블에서 author_id_number라는 열에 속할 수 있습니다.

참고:

이전 버전의 Visual Studio에서는 응용 프로그램과 데이터베이스 간의 통신에 데이터 어댑터를 사용했습니다. 이전과 마찬가지로 데이터 어댑터는 .NET Framework 데이터 공급자(ADO.NET)의 주 구성 요소이지만 TableAdapter는 응용 프로그램과 데이터베이스 간의 데이터 이동 프로세스를 간단하게 만들기 위해 디자이너에서 생성한 구성 요소입니다. TableAdapter 작업에 대한 자세한 내용은 TableAdapter 개요를 참조하십시오.

기본적으로 Visual Studio 도구를 사용하여 데이터 소스의 정보에서 데이터 집합을 생성하는 경우 데이터 집합 요소는 소스에 있을 때와 같은 이름을 갖습니다. 그러나 다음과 같은 경우에 데이터 소스의 이름과 데이터 집합의 이름은 일치하지 않습니다.

  • 데이터 집합이 다른 이름을 사용하는 기존 스키마로부터 만들어진 경우

  • 편의를 위해, 읽기 쉽도록 하기 위해, 외국어와의 번역을 위해 또는 그 밖의 이유로 인해 데이터 집합의 데이터 요소 이름을 변경하려는 경우

  • 어댑터에서 데이터 집합을 생성할 때 형식화된 데이터 멤버의 이름을 제어하는 경우

테이블 매핑 구조

테이블 매핑은 DataTableMapping 형식의 항목 컬렉션인 어댑터의 TableMappings 속성을 사용하여 설정됩니다. 매핑되는 각 테이블 집합에 대해 하나의 DataTableMapping 개체가 있습니다. 일반적으로 어댑터에는 하나의 소스 테이블 및 데이터 집합 테이블과 관련되어 있기 때문에 하나의 항목만 있습니다. 그러나 저장 프로시저는 여러 행 집합을 반환할 수 있으며 이 경우 TableMappings 컬렉션의 둘째 매핑과 이후 매핑을 사용하여 둘째 테이블과 이후 테이블이 매핑됩니다.

반대로 각 매핑 항목에는 데이터 소스 테이블과 데이터 집합 테이블을 확인하는 속성과 실제 매핑을 나타내는 항목을 포함한 ColumnMappings 속성이 있습니다.

테이블 매핑 진행

데이터 어댑터의 Fill 메서드를 호출하면 어댑터는 다음과 같은 과정을 진행하여 데이터 집합에서 데이터를 쓸 위치를 결정합니다.

  1. 어댑터에서 TableMappings 개체의 각 소스 열 이름을 조회합니다.

  2. 소스 열 이름을 찾으면 데이터 집합 테이블의 해당하는 열에 대해 일치하는(매핑된) 이름을 가져옵니다.

  3. 어댑터는 2단계에서 가져온 이름을 사용하여 소스 열의 데이터를 해당 데이터 집합 열에 씁니다.

어댑터에서 위의 과정을 수행하는 데 방해가 되는 여러 상황이 있습니다. 다음은 문제가 되는 두 가지 경우입니다.

  • 소스 열에 대한 매핑을 찾을 수 없습니다. 그 이유는 TableMappings 속성에 대해 정의되어 있지 않거나 특정 열이 매핑되어 있지 않기 때문입니다.

  • TableMappings 속성에 매핑되어 있는지 여부에 관계 없이 데이터 집합의 스키마에 쓸 열이 정의되어 있지 않습니다.

이러한 상황이 발생한 경우 어댑터에서는 수행할 동작을 지정할 수 있도록 두 가지 속성을 지원합니다. 또한 어댑터에서 데이터 집합을 채울 수 있기 때문에 오류가 발생한 것은 아닙니다.

매핑이 없으면 MissingMappingAction 속성을 사용하여 어댑터에서 수행할 동작을 지정할 수 있습니다. 다음과 같이 설정할 수 있습니다.

  • Passthrough – 어댑터에서 열을 동일한 이름의 데이터 집합 열로 로드하려 합니다. 동일한 이름의 데이터 집합 열이 없으면 아래와 같이 MissingSchemaAction 열거형 설정에 따라 수행할 동작이 결정됩니다(아래 참조).

  • Ignore – 올바로 매핑되지 않은 열은 데이터 집합으로 로드되지 않습니다.

  • Error - 오류를 발생시킵니다.

MissingSchemaAction 속성을 사용하면 어댑터에서 데이터 집합의 스키마에 정의되지 않은 열에 데이터를 쓰려고 할 때 수행할 작업을 지정할 수 있습니다. 가능한 값은 다음과 같습니다.

  • Add – 테이블이나 열이 스키마와 데이터 집합에 추가됩니다.

  • AddWithKey – 테이블이나 열이 기본 키 정보와 함께 스키마와 데이터 집합에 추가됩니다.

  • Ignore – 데이터 집합 스키마에 표시되지 않은 테이블이나 열이 데이터 집합에 추가되지 않습니다.

  • Error – 어댑터가 오류를 발생시킵니다.

일반적으로 응용 프로그램의 필요에 따라 이러한 속성을 함께 설정합니다. MissingMappingAction 속성을 Passthrough로 설정하고 MissingSchemaAction 속성을 Add로 설정하면 데이터 집합의 소스에서 테이블 이름과 열 이름이 자동으로 복제됩니다.

반대로 데이터 집합 스키마가 엄격하게 정의된 응용 프로그램에서는 오류 검사를 지정할 수 있습니다. 이 경우 대상 열이 데이터 집합에 명확하게 정의되지 않은 상태에서 소스의 데이터를 가져오는 것은 업무 논리나 기타 오류 규칙에 위배됩니다.

스키마에 명시적으로 정의되거나 TableMappings 속성에서 매핑된 데이터만 데이터 집합에 로드되도록 하려면 Ignore를 지정합니다. 이 방식은 어댑터가 데이터 집합에서 필요한 것보다 많은 열을 반환하는 저장 프로시저나 SQL 문을 호출하는 경우에 유용합니다.

참고 항목

작업

방법: 데이터 소스 열을 데이터 집합의 데이터 테이블 열로 매핑

개념

데이터 어댑터 소개

DataAdapter에서 DataSet 채우기(ADO.NET)

데이터의 새로운 기능

Visual Studio를 사용하여 데이터 응용 프로그램 만들기

참조

테이블 매핑 대화 상자

기타 리소스

DataAdapters(ADO.NET)

데이터 어댑터 만들기

데이터 연습

ADO.NET