Asignaciones de tablas en adaptadores de datos

Actualización: noviembre 2007

Cuando un adaptador de datos lee datos de un origen de datos, utiliza una asignación de tabla para determinar dónde poner los datos en la tabla o tablas correspondientes del conjunto de datos. La asignación vincula los nombres de las columnas del origen con los de la tabla del conjunto de datos. Por ejemplo, la información de una columna denominada au_id en el origen de datos podría pertenecer a una columna denominada author_id_number en la tabla del conjunto de datos.

Nota:

En la versión anterior de Visual Studio, los adaptadores de datos se utilizaban para la comunicación de la aplicación con una base de datos. Aunque los adaptadores de datos siguen siendo un componente fundamental de los .Proveedores de datos de .NET Framework (ADO.NET), los TableAdapters son componentes generados por el diseñador que simplifican el proceso de mover datos entre su aplicación y una base de datos. Para obtener más información sobre cómo trabajar con TableAdapters, vea Información general sobre TableAdapter.

De forma predeterminada, cuando utilice las herramientas de Visual Studio para generar un conjunto de datos a partir de la información de un origen de datos, los elementos del conjunto de datos tendrán los mismos nombres que tienen en el origen. Sin embargo, hay ocasiones en las que los nombres del origen de datos y del conjunto de datos no coincidirán:

  • Si el conjunto de datos se creó a partir de un esquema existente que utilice nombres diferentes.

  • Si se desea cambiar los nombres de los elementos del conjunto de datos por razones de comodidad, legibilidad, traducción hacia o desde un idioma diferente, o por cualquier otra razón.

  • Si desea controlar los nombres de los miembros de datos con tipo al generar un conjunto de datos a partir del adaptador.

Estructura de las asignaciones de tablas

Las asignaciones de tablas se establecen mediante la propiedad TableMappings del adaptador, que es una colección de elementos de tipo DataTableMapping. Hay un objeto DataTableMapping para cada conjunto de tablas que se está asignando. Normalmente sólo hay un elemento de este tipo, porque los adaptadores suelen asociarse con una sola tabla de origen y una sola tabla de conjunto de datos. (No obstante, un procedimiento almacenado puede devolver múltiples conjuntos de filas; si es así, la segunda tabla y las posteriores se asignan mediante la segunda asignación y las posteriores de la colección TableMappings.)

Cada elemento de asignación, a su vez, contiene propiedades que identifican la tabla de origen de datos, la tabla del conjunto de datos y una propiedad ColumnMappings que contiene elementos que representan las asignaciones reales.

La asignación de tablas en acción

Cuando se llama al método Fill de un adaptador de datos, el adaptador pasa por el siguiente proceso para determinar en qué punto del conjunto de datos se escriben los datos:

  1. El adaptador busca cada uno de los nombres de columna de origen en el objeto TableMappings.

  2. Cuando encuentra el nombre de columna de origen, obtiene el nombre coincidente (asignado) para la columna correspondiente de la tabla del conjunto de datos.

  3. Con el nombre que obtuvo en el paso 2, el adaptador escribe los datos de la columna de origen en la columna correspondiente del conjunto de datos.

Hay varias condiciones que pueden impedir que el adaptador siga el proceso antes descrito. Las dos principales son:

  • Que no se encuentre ninguna asignación para una columna de origen. Esto puede ocurrir porque no se haya definido nada en la propiedad TableMappings o porque una columna específica no esté asignada.

  • Que la columna que se va a escribir no esté definida en el esquema del conjunto de datos, ya esté o no asignada en la propiedad TableMappings.

El adaptador admite dos propiedades que permiten especificar lo que debe ocurrir cuando se produzca alguna de estas situaciones. Las situaciones no son necesariamente condiciones de error, porque el adaptador puede continuar llenando el conjunto de datos aunque se produzca cualquiera de ellas.

La propiedad MissingMappingAction permite especificar qué acción debe ejecutar el adaptador si falta la asignación. Las configuraciones posibles son:

  • Passthrough - el adaptador intenta cargar la columna en una columna del mismo nombre en el conjunto de datos. Si no hay ninguna columna en el conjunto de datos que tenga el mismo nombre, el comportamiento depende de la configuración de enumeración MissingSchemaAction (vea a continuación).

  • Ignore - las columnas que no están correctamente asignadas no se cargan en el conjunto de datos.

  • Error - produce un error.

La propiedad MissingSchemaAction permite especificar qué ocurrirá cuando el adaptador intente escribir datos en una columna que no esté definida en el esquema del conjunto de datos. Los valores posibles son:

  • Add - la tabla o columna se agrega al esquema y al conjunto de datos.

  • AddWithKey - la tabla o columna se agrega al conjunto de datos junto con información acerca de la clave principal.

  • Ignore - la tabla o columna no representada en el esquema del conjunto de datos no se agrega al conjunto de datos.

  • Error - el adaptador produce un error.

Habitualmente, ambas propiedades se establecen de forma conjunta para satisfacer las necesidades específicas de la aplicación. Establecer la propiedad MissingMappingAction en Passthrough y la propiedad MissingSchemaAction en Add tiene el efecto de duplicar automáticamente la los nombres de tabla y de columnas del origen del conjunto de datos.

A la inversa, es posible especificar la comprobación de errores en aplicaciones en las que el esquema del conjunto de datos está estrictamente definido. En tal caso, la obtención de datos de un origen sin una columna de destino claramente definida en el conjunto de datos podría constituir una infracción de las reglas de empresa u otro error.

Especifique Ignore cuando desee asegurarse de que los únicos datos cargados en el conjunto de datos son los definidos explícitamente en el esquema o los asignados en la propiedad TableMappings. Esto es útil si el adaptador llama a un procedimiento almacenado o a una instrucción SQL que devuelva más columnas de las que se necesitan en el conjunto de datos.

Vea también

Tareas

Cómo: Asignar columnas de orígenes de datos a columnas de tablas de datos del conjunto de datos

Conceptos

Introducción a los adaptadores de datos

Rellenar un objeto DataSet desde un objeto DataAdapter (ADO.NET)

Lo nuevo en datos

Crear aplicaciones de datos utilizando Visual Studio

Referencia

Asignaciones de tablas (Cuadro de diálogo)

Otros recursos

DataAdapters y DataReaders (ADO.NET)

Crear adaptadores de datos

Tutoriales sobre datos

ADO.NET