İ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