Deducir relaciones (ADO.NET)
Actualización: November 2007
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á en 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
Tabla: Element1
Element1_Id |
ChildElement2 |
---|---|
0 |
Text2 |
Tabla: 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
Conceptos
Cargar DataSet desde XML (ADO.NET)
Cargar la información de esquema de DataSet desde XML (ADO.NET)
Anidar DataRelations (ADO.NET)
Otros recursos
Deducir la estructura relacional de DataSet de XML (ADO.NET)