Aracılığıyla paylaş


İlişkilerin Çıkarımını Yapma

Tablo olarak çıkarılmış bir öğenin de tablo olarak çıkarılmış bir alt öğesi varsa, iki tablo arasında bir DataRelation oluşturulur. Hem üst öğe için oluşturulan tabloya hem de alt öğe için oluşturulan tabloya ParentTableName_Id adlı yeni bir sütun eklenir. Bu kimlik sütununun ColumnMapping özelliği MappingType.Hidden olarak ayarlanır. Sütun, üst tablo için otomatik olarak artan bir birincil anahtar olacak ve iki tablo arasındaki DataRelation için kullanılacaktır. Eklenen kimlik sütununun veri türü, system.string olan diğer tüm çıkarılan sütunların veri türünden farklı olarak System.Int32 olacaktır. DeleteRule = Cascade içeren bir ForeignKeyConstraint de hem üst hem de alt tablolardaki yeni sütun kullanılarak oluşturulur.

Örneğin, aşağıdaki XML'yi göz önünde bulundurun:

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

Çıkarım işlemi iki tablo oluşturur: Element1 ve ChildElement1.

Element1 tablosunda iki sütun bulunur: Element1_Id ve ChildElement2. Element1_Id sütununun ColumnMapping özelliği MappingType.Hidden olarak ayarlanır. ChildElement2 sütununun ColumnMapping özelliği MappingType.Element olarak ayarlanır. Element1_Id sütunu, Element1 tablosunun birincil anahtarı olarak ayarlanır.

ChildElement1 tablosunun üç sütunu olacaktır: attr1, attr2 ve Element1_Id. attr1 ve attr2 sütunlarının ColumnMapping özelliği MappingType.Attribute olarak ayarlanır. Element1_Id sütununun ColumnMapping özelliği MappingType.Hidden olarak ayarlanır.

Her iki tablodan Element1_Id sütunları kullanılarak DataRelation ve ForeignKeyConstraint oluşturulur.

DataSet: DocumentElement

Tablo: Öğe1

Element1_Id ChildElement2
0 Metin2

Tablo: ChildElement1

attr1 attr2 Element1_Id
değer1 değer2 0

DataRelation: Element1_ChildElement1

ParentTable: Öğe1

ParentColumn: Element1_Id

ChildTable: ChildElement1

ChildColumn: Element1_Id

İç içe: True

ForeignKeyConstraint: Element1_ChildElement1

Sütun: Element1_Id

ParentTable: Öğe1

ChildTable: ChildElement1

DeleteRule: Art Arda

AcceptRejectRule: Yok

Ayrıca bkz.