다음을 통해 공유


관계 유추(ADO.NET)

테이블로 유추되는 요소에 역시 테이블로 유추되는 자식 요소가 있으면 두 테이블 사이에 DataRelation이 만들어집니다. ParentTableName_Id라는 이름의 새 열이 부모 요소에 대해 만들어진 테이블과 자식 요소에 대해 만들어진 테이블에 모두 추가됩니다. 이 ID 열의 ColumnMapping 속성은 MappingType.Hidden으로 설정됩니다. 이 열은 부모 테이블에 대한 자동 증분 기본 키가 되며 두 테이블 사이의 DataRelation에 사용됩니다. 추가된 ID 열의 데이터 형식은 다른 모든 유추된 열의 데이터 형식인 System.String과는 달리 System.Int32가 됩니다. 부모 및 자식 테이블에 모두 포함된 새 열을 사용하여 DeleteRule = CascadeForeignKeyConstraint도 만들어집니다.

예를 들어, 다음과 같은 XML을 가정해 봅시다.

<DocumentElement>
  <Element1>
    <ChildElement1 attr1="value1" attr2="value2"/>
    <ChildElement2>Text2</ChildElement2>
  </Element1>
</DocumentElement>

위 유추 과정에서 Element1ChildElement1이라는 두 개의 테이블이 생성됩니다.

Element1 테이블에는 Element1_IdChildElement2라는 두 개의 열이 포함됩니다. Element1_Id 열의 ColumnMapping 속성은 MappingType.Hidden으로 설정됩니다. ChildElement2 열의 ColumnMapping 속성은 MappingType.Element로 설정됩니다. Element1_Id 열은 Element1 테이블의 기본 키로 설정됩니다.

ChildElement1 테이블에는 attr1, attr2Element1_Id라는 세 개의 열이 포함됩니다. attr1attr2열의 ColumnMapping 속성은 MappingType.Attribute로 설정됩니다. Element1_Id 열의 ColumnMapping 속성은 MappingType.Hidden으로 설정됩니다.

DataRelationForeignKeyConstraint는 두 테이블의 Element1_Id 열을 사용하여 만들어집니다.

DataSet: DocumentElement

Table: Element1

Element1_Id

ChildElement2

0

Text2

Table: ChildElement1

attr1

attr2

Element1_Id

value1

value2

0

DataRelation: Element1_ChildElement1

ParentTable: Element1

ParentColumn: Element1_Id

ChildTable: ChildElement1

ChildColumn: Element1_Id

Nested: True

ForeignKeyConstraint: Element1_ChildElement1

Column: Element1_Id

ParentTable: Element1

ChildTable: ChildElement1

DeleteRule: Cascade

AcceptRejectRule: None

참고 항목

개념

XML로부터 DataSet 로드(ADO.NET)

XML로부터 DataSet 스키마 정보 로드(ADO.NET)

DataRelations 중첩(ADO.NET)

기타 리소스

XML에서 DataSet 관계형 구조 유추(ADO.NET)

DataSet에서 XML 사용(ADO.NET)

DataSets, DataTables 및 DataViews(ADO.NET)