Condividi tramite


Mapping di tabelle negli adattatori dati

Aggiornamento: novembre 2007

Quando un adattatore dati legge i dati da un'origine dati, determina la posizione in cui inserire i dati nella tabella o nelle tabelle Dataset corrispondenti mediante un mapping di tabella. Il mapping consente di collegare i nomi delle colonne nell'origine con quelli della tabella Dataset. È possibile, ad esempio, che le informazioni contenute in una colonna definita au_id nell'origine dati appartengano a una colonna denominata author_id_number nella tabella Dataset.

Nota:

Nella versione precedente di Visual Studio per le comunicazioni tra un'applicazione e un database venivano utilizzati degli adattatori dati. Mentre gli adattatori dati sono comunque un componente essenziale dei .Provider di dati .NET Framework (ADO.NET), gli oggetti TableAdapter sono componenti generati dalla finestra di progettazione che consentono di semplificare il processo di spostamento dei dati fra l'applicazione dell'utente e un database. Per ulteriori informazioni sull'utilizzo degli oggetti TableAdapter, vedere Cenni preliminari sugli oggetti TableAdapter.

Per impostazione predefinita, quando si utilizzano gli strumenti di Visual Studio per generare un dataset dalle informazioni presenti in un'origine dati, i nomi degli elementi del dataset sono identici a quelli degli elementi dell'origine dati. In alcuni casi, come quelli riportati di seguito, è tuttavia possibile che non esista alcuna corrispondenza tra i nomi nell'origine dati e quelli nel dataset:

  • Il dataset è stato creato da uno schema esistente che utilizza nomi differenti.

  • Si desidera modificare i nomi degli elementi di dati nel dataset per una maggiore praticità o leggibilità o ai fini della traduzione in e da altre lingue o per altri motivi.

  • Si desidera controllare i nomi dei membri di dati tipizzati durante la generazione di un dataset dall'adattatore.

Struttura dei mapping delle tabelle

I mapping delle tabelle vengono stabiliti mediante la proprietà TableMappings dell'adattatore, che rappresenta un insieme di elementi di tipo DataTableMapping. Per ciascun insieme di tabelle mappato è disponibile un singolo oggetto DataTableMapping. È generalmente disponibile un solo oggetto, in quanto gli adattatori vengono normalmente associati solo a una singola tabella di origine e a una singola tabella Dataset. È tuttavia possibile che una stored procedure restituisca più insiemi di righe. In questo caso, la seconda tabella e quelle successive vengono associate utilizzando il secondo mapping e quelli successivi inclusi nell'insieme TableMappings.

Ciascun elemento del mapping contiene a sua volta le proprietà che consentono di identificare la tabella dell'origine dati, la tabella Dataset e una proprietà ColumnMappings contenente gli elementi che rappresentano i mapping effettivi.

Esecuzione del mapping delle tabelle

Quando si chiama il metodo Fill di un adattatore dati, l'adattatore effettua le operazioni descritte di seguito per stabilire in quale posizione del dataset scrivere i dati:

  1. Ricerca il nome di ciascuna colonna di origine nell'oggetto TableMappings.

  2. Quando trova il nome della colonna di origine, recupera il nome corrispondente (mappato) per la colonna corrispondente nella tabella Dataset.

  3. Utilizzando il nome ottenuto nel passaggio 2, l'adattatore scrive i dati dalla colonna di origine nella colonna Dataset corrispondente.

Esistono diverse condizioni che possono impedire all'adattatore di seguire il processo appena descritto. Le due più importanti sono le seguenti:

  • Non è possibile trovare alcun mapping per una colonna di origine. Questa condizione può verificarsi in quanto non è stato definito alcun elemento per la proprietà TableMappings o perché una specifica colonna non è stata mappata.

  • La colonna da scrivere non viene definita nello schema del dataset, indipendentemente dal fatto che sia stato o non sia stato eseguito il mapping nella proprietà TableMappings.

L'adattatore supporta due proprietà che consentono di specificare l'azione da intraprendere quando si verificano queste situazioni. Non si tratta necessariamente di condizioni di errore, in quanto, anche qualora se ne verifichi una, l'adattatore potrà continuare a inserire dati nel dataset.

La proprietà MissingMappingAction consente di specificare l'azione che l'adattatore deve intraprendere in assenza del mapping. Le impostazioni possibili sono le seguenti:

  • Passthrough: l'adattatore tenta di caricare la colonna in una colonna del dataset con lo stesso nome. Se nel dataset non esiste alcuna colonna con quel nome, l'azione intrapresa dipenderà dall'impostazione MissingSchemaAction, come illustrato di seguito.

  • Ignore: le colonne non mappate correttamente non vengono caricate nel dataset.

  • Error: genera un errore.

La proprietà MissingSchemaAction consente di specificare l'azione da intraprendere quando l'adattatore prova a scrivere dati in una colonna che non è definita nello schema del dataset. I possibili valori sono:

  • Add: la tabella o la colonna viene aggiunta allo schema e al dataset.

  • AddWithKey: la tabella o la colonna viene aggiunta al datase e allo schema insieme a informazioni sulla chiave primaria.

  • Ignore: la tabella o la colonna non rappresentata nello schema del dataset non viene aggiunta al dataset.

  • Error: l'adattatore genera un errore.

Entrambe le proprietà vengono generalmente impostate in combinazione per soddisfare le esigenze specifiche dell'applicazione. L'impostazione della proprietà MissingMappingAction su Passthrough e della proprietà MissingSchemaAction su Add comporta la duplicazione automatica dei nomi delle tabelle e delle colonne dell'origine nel dataset.

È invece possibile specificare il controllo degli errori nelle applicazioni in cui lo schema del dataset viene definito in modo rigoroso. In questo caso, il recupero dei dati da un'origine senza aver definito chiaramente una colonna di destinazione nel dataset potrebbe rappresentare una violazione di una regola aziendale o un altro tipo di errore.

L'impostazione Ignore viene specificata quando si desidera avere la certezza che gli unici dati caricati nel dataset siano quelli definiti in modo esplicito nella schema o mappati nella proprietà TableMappings. Questo risulta utile se l'adattatore chiama una stored procedure o un'istruzione SQL che restituisce un numero di colonne maggiore di quello richiesto nel dataset.

Vedere anche

Attività

Procedura: eseguire il mapping delle colonne dell'origine dati alle colonne delle tabelle dati di un dataset

Concetti

Introduzione agli adattatori dati

Compilazione di un DataSet da un oggetto DataAdapter (ADO.NET)

Novità relative ai dati

Creazione di applicazioni dati con Visual Studio

Riferimenti

Finestra di dialogo Mapping tabelle

Altre risorse

DataAdapter e DataReader (ADO.NET)

Creazione di adattatori dati

Procedure dettagliate relative ai dati

ADO.NET