Condividi tramite


Aggiunta di vincoli esistenti a un dataset

Il Fill metodo dell'oggetto DataAdapter riempie solo DataSet le colonne di tabella e le righe di un'origine dati, anche se i vincoli vengono comunemente impostati dall'origine dati, il Fill metodo non aggiunge queste informazioni sullo schema all'oggetto DataSet per impostazione predefinita. Per popolare un oggetto DataSet con informazioni sui vincoli di chiave primaria esistenti da un'origine dati, è possibile chiamare il metodo FillSchema di DataAdapter o impostare la proprietà MissingSchemaAction di DataAdapter su AddWithKey prima di chiamare Fill. In questo modo si garantisce che i vincoli di chiave primaria presenti nell'oggetto DataSet riflettano quelli dell'origine dati. Le informazioni sul vincolo di chiave esterna non sono incluse e devono essere create in modo esplicito, come illustrato in Vincoli DataTable.

L'aggiunta di informazioni sullo schema a un oggetto DataSet prima di compilarla con i dati garantisce che i DataTable vincoli di chiave primaria siano inclusi negli oggetti nel DataSet. Di conseguenza, quando vengono effettuate chiamate aggiuntive per riempire l'oggetto DataSet, le informazioni sulla colonna chiave primaria vengono utilizzate per abbinare le nuove righe provenienti dall'origine dati alle righe correnti in ogni DataTable, e i dati correnti nelle tabelle vengono sovrascritti con quelli provenienti dall'origine dati. Senza le informazioni sullo schema, le nuove righe provenienti dall'origine dati verrebbero aggiunte a DataSet generando righe duplicate.

Nota

Se una colonna in un'origine dati viene identificata come auto-incrementante, il metodo FillSchema o il metodo Fill con l'opzione MissingSchemaActionAddWithKey crea un DataColumn con una proprietà AutoIncrement impostata su true. Tuttavia, sarà necessario impostare manualmente i AutoIncrementStep valori e AutoIncrementSeed . Per altre informazioni sulle colonne con incremento automatico, vedere Creazione di colonne con incremento automatico.

L'uso FillSchema o l'impostazione di MissingSchemaAction su AddWithKey richiede un'elaborazione aggiuntiva nell'origine dati per determinare le informazioni sulla colonna chiave primaria. Questa ulteriore elaborazione può ridurre le prestazioni. Se le informazioni sulla chiave primaria sono note in fase di progettazione, è consigliabile specificare la colonna o le colonne della chiave primaria in modo esplicito per migliorare le prestazioni. Per altre informazioni sull'impostazione esplicita delle informazioni sulla chiave primaria per una tabella, vedere Definizione di chiave primarie.

L'esempio di codice seguente illustra come aggiungere informazioni sullo schema a un DataSet oggetto usando FillSchema:

Dim custDataSet As New DataSet()

custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers")
custAdapter.Fill(custDataSet, "Customers")
var custDataSet = new DataSet();

custAdapter.FillSchema(custDataSet, SchemaType.Source, "Customers");
custAdapter.Fill(custDataSet, "Customers");

Nell'esempio di codice seguente viene illustrato come aggiungere informazioni sullo schema a un DataSet oggetto utilizzando la proprietà MissingSchemaAction.AddWithKey del Fill metodo :

Dim custDataSet As New DataSet()

custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey
custAdapter.Fill(custDataSet, "Customers")
var custDataSet = new DataSet();

custAdapter.MissingSchemaAction = MissingSchemaAction.AddWithKey;
custAdapter.Fill(custDataSet, "Customers");

Gestione di più set di risultati

DataAdapter Se rileva più set di risultati restituiti da SelectCommand, creerà più tabelle nel Set di dati. Alle tabelle verrà assegnato un nome predefinito incrementale in base zero di TableN, a partire da Table invece di "Table0". Se un nome di tabella viene passato come argomento al FillSchema metodo, alle tabelle verrà assegnato un nome incrementale in base zero di TableNameN, a partire da TableName invece di "TableName0".

Nota

Se viene chiamato il FillSchema metodo dell'oggetto OleDbDataAdapter per un comando che restituisce più set di risultati, vengono restituite solo le informazioni sullo schema del primo set di risultati. Quando si restituiscono informazioni sullo schema per più set di risultati usando OleDbDataAdapter, è consigliabile specificare un oggetto di tipo MissingSchemaAction e AddWithKey e ottenere le informazioni sullo schema quando si chiama il metodo Fill.

Vedi anche