Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Un DataAdapter contiene una colección de cero o más objetos DataTableMapping en la propiedad TableMappings. El DataTableMapping proporciona una asignación principal entre los datos devueltos de una consulta en un origen de datos y un DataTable. El DataTableMapping nombre se puede pasar en lugar del DataTable nombre al método Fill de DataAdapter. En el ejemplo siguiente se crea un DataTableMapping denominado AuthorsMapping para la Authors tabla.
workAdapter.TableMappings.Add("AuthorsMapping", "Authors")
workAdapter.TableMappings.Add("AuthorsMapping", "Authors");
Un DataTableMapping permite usar nombres de columna en un DataTable que son diferentes de los de la base de datos.
DataAdapter usa la asignación para que coincida con las columnas cuando se actualiza la tabla.
Si no especifica un TableName nombre al llamar al método Fill o Update de DataAdapter, el DataAdapter buscará un DataTableMapping denominado "Table". Si DataTableMapping no existe, el TableName de el DataTable es "Tabla". Puede especificar un valor predeterminado DataTableMapping creando un DataTableMapping con el nombre "Table".
En el ejemplo de código siguiente se crea un elemento DataTableMapping del espacio de nombres System.Data.Common y se convierte en la asignación predeterminada para el especificado DataAdapter, nombrándolo "Table". A continuación, en el ejemplo se asignan las columnas de la primera tabla del resultado de la consulta (la Customers tabla de la Northwind base de datos) a un conjunto de nombres más fáciles de usar en la tabla Northwind Customers de DataSet. En las columnas que no se asignan se usa el nombre de la columna en el origen de datos.
Dim mapping As DataTableMapping = _
adapter.TableMappings.Add("Table", "NorthwindCustomers")
mapping.ColumnMappings.Add("CompanyName", "Company")
mapping.ColumnMappings.Add("ContactName", "Contact")
mapping.ColumnMappings.Add("PostalCode", "ZIPCode")
adapter.Fill(custDS)
DataTableMapping mapping =
adapter.TableMappings.Add("Table", "NorthwindCustomers");
mapping.ColumnMappings.Add("CompanyName", "Company");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIPCode");
adapter.Fill(custDS);
En situaciones más avanzadas, puede decidir que desea que el mismo DataAdapter admita la carga de tablas diferentes con asignaciones diferentes. Para ello, basta con agregar objetos adicionales DataTableMapping .
Cuando se pasa al método Fill una instancia de DataSet y un nombre DataTableMapping, si existe una asignación con ese nombre, se utiliza; de lo contrario, se usa un DataTable con ese nombre.
En los siguientes ejemplos se crea un DataTableMapping con un nombre de Customers y un DataTable llamado BizTalkSchema. A continuación, en el ejemplo se asignan las filas devueltas por la instrucción SELECT a BizTalkSchema.
Dim mapping As ITableMapping = _
adapter.TableMappings.Add("Customers", "BizTalkSchema")
mapping.ColumnMappings.Add("CustomerID", "ClientID")
mapping.ColumnMappings.Add("CompanyName", "ClientName")
mapping.ColumnMappings.Add("ContactName", "Contact")
mapping.ColumnMappings.Add("PostalCode", "ZIP")
adapter.Fill(custDS, "Customers")
ITableMapping mapping =
adapter.TableMappings.Add("Customers", "BizTalkSchema");
mapping.ColumnMappings.Add("CustomerID", "ClientID");
mapping.ColumnMappings.Add("CompanyName", "ClientName");
mapping.ColumnMappings.Add("ContactName", "Contact");
mapping.ColumnMappings.Add("PostalCode", "ZIP");
adapter.Fill(custDS, "Customers");
Nota:
Si no se proporciona un nombre de columna de origen en una asignación de columnas o no se identifica un nombre de tabla de origen en una asignación de tablas, se generan nombres predeterminados de forma automática. Si no se proporciona ninguna columna de origen para una asignación de columnas, la asignación de columnas recibe un nombre predeterminado incremental de SourceColumnN, empezando por SourceColumn1. Si no se proporciona ningún nombre de tabla de origen para una asignación de tabla, la asignación de tablas recibe un nombre predeterminado incremental de SourceTableN, empezando por SourceTable1.
Nota:
Se recomienda evitar la convención de nomenclatura de SourceColumn para una asignación de columnas o SourceTableN para una asignación de tabla, ya que el nombre proporcionado puede entrar en conflicto con un nombre de asignación de columna predeterminado existente en el ColumnMappingCollection nombre de asignación de tabla o en DataTableMappingCollection. Si el nombre proporcionado ya existe, se iniciará una excepción.
Controlar varios conjuntos de resultados
SelectCommand Si devuelve varias tablas, Fill genera automáticamente nombres de tabla con valores incrementales para las tablas del Conjunto de datos, empezando por el nombre de tabla especificado y continuando en el formulario TableNameN, empezando por TableName1. Puede usar asignaciones de tabla para asignar el nombre generado automáticamente a un nombre que quiera especificar para la tabla en el objeto DataSet. Por ejemplo, para un SelectCommand que devuelve dos tablas Customers y Orders, emita la siguiente llamada a Fill.
adapter.Fill(customersDataSet, "Customers")
adapter.Fill(customersDataSet, "Customers");
Se crean dos tablas en DataSet: Customers y Customers1. Puede usar asignaciones de tabla para asegurarse de que la segunda tabla se denomina Orders en lugar de Customers1. Para ello, asigne la tabla de origen Customers1 a la DataSet tabla Orders, como se muestra en el ejemplo siguiente.
adapter.TableMappings.Add("Customers1", "Orders")
adapter.Fill(customersDataSet, "Customers")
adapter.TableMappings.Add("Customers1", "Orders");
adapter.Fill(customersDataSet, "Customers");