Compartir a través de


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)

Utilizar XML en un DataSet (ADO.NET)

DataSets, DataTables y DataViews (ADO.NET)