Deducir relaciones
Si un elemento que se deduce como una tabla tiene un elemento secundario que también se deduce como una tabla, se creará una DataRelation entre las dos tablas. Se agregará una nueva columna denominada "ParentTableName_Id" tanto a la tabla creada para el elemento primario como a la tabla creada para el elemento secundario. La propiedad ColumnMapping de esta columna de identidad se establecerá en MappingType.Hidden. La columna será una clave principal de incremento automático para la tabla primaria y se utilizará para la DataRelation entre las dos tablas. El tipo de datos de la columna de identidad agregada será System.Int32, a diferencia del tipo de datos de todas las demás columnas deducidas, que es System.String. También se creará una ForeignKeyConstraint con DeleteRule = Cascade utilizando la nueva columna tanto en la tabla primaria como en la tabla secundaria.
Por ejemplo, tomemos el siguiente código XML:
<DocumentElement>
<Element1>
<ChildElement1 attr1="value1" attr2="value2"/>
<ChildElement2>Text2</ChildElement2>
</Element1>
</DocumentElement>
El proceso de inferencia producirá dos tablas: "Element1" y "ChildElement1".
La tabla "Element1" tendrá dos columnas: "Element1_Id" y "ChildElement2". La propiedad ColumnMapping de la columna "Element1_Id" se establecerá en MappingType.Hidden. La propiedad ColumnMapping de la columna "ChildElement2" se establecerá como MappingType.Element. La columna "Element1_Id" se establecerá como clave principal de la tabla "Element1".
La tabla "ChildElement1" tendrá tres columnas: "attr1", "attr2" y "Element1_Id". La propiedad ColumnMapping de las columnas "attr1" y "attr2" se establecerá en MappingType.Attribute. La propiedad ColumnMapping de la columna "Element1_Id" se establecerá en MappingType.Hidden.
Se creará una DataRelation y una ForeignKeyConstraint utilizando las columnas "Element1_Id" de ambas tablas.
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
Vea también
Deducir la estructura relacional de DataSet de XML | Cargar DataSet desde XML | Cargar la información de esquema de DataSet desde XML | DataRelations anidadas | XML y DataSet | Crear y utilizar DataSets