Condividi tramite


Aggiunta di vincoli esistenti a un DataSet (ADO.NET)

Il metodo Fill di DataAdapter consente di compilare un DataSet solo con colonne e righe di tabella di un'origine dati. Sebbene i vincoli vengano in genere impostati dall'origine dati, per impostazione predefinita il metodo Fill non aggiunge queste informazioni sullo schema al DataSet. Per compilare un DataSet con le informazioni esistenti sui vincoli della chiave primaria da un'origine dati, è possibile chiamare il metodo FillSchema di DataAdapter oppure impostare la proprietà MissingSchemaAction di DataAdapter su AddWithKey prima di chiamare Fill. Ciò garantisce che i vincoli della chiave primaria nel DataSet riflettano quelli nell'origine dati. Le informazioni sul vincolo di chiave esterna non sono incluse e devono essere create in modo esplicito, come illustrato in Vincoli di DataTable (ADO.NET).

L'aggiunta delle informazioni sullo schema in un DataSet prima di compilarlo con i dati assicura che i vincoli della chiave primaria siano inclusi negli oggetti DataTable e DataSet. In questo modo, quando vengono effettuate altre chiamate per compilare il DataSet, le informazioni nella colonna della chiave primaria vengono utilizzate per confrontare le nuove righe provenienti dall'origine dati con le righe correnti in ogni DataTable e i dati correnti nelle tabelle vengono sovrascritti con i dati provenienti dall'origine dati. Senza le informazioni sullo schema, le nuove righe provenienti dall'origine dati verrebbero aggiunte al DataSet generando righe duplicate.

NotaNota

Se una colonna in un'origine dati viene identificata come colonna con incremento automatico, il metodo FillSchema, o il metodo Fill con la proprietà MissingSchemaAction impostata su AddWithKey, crea un oggetto DataColumn con una proprietà AutoIncrement impostata su true.È tuttavia necessario impostare direttamente i valori di AutoIncrementStep e AutoIncrementSeed.Per ulteriori informazioni sulle colonne con incremento automatico, vedere Creazione di colonne AutoIncrement (ADO.NET).

Se si utilizza FillSchema o si imposta MissingSchemaAction su AddWithKey, è necessaria un'elaborazione aggiuntiva nell'origine dati per determinare le informazioni della colonna della 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 ulteriori informazioni sull'impostazione esplicita delle informazioni sulla chiave primaria per una tabella, vedere Definizione di chiavi primarie (ADO.NET).

Nell'esempio di codice seguente viene descritto come aggiungere le informazioni sullo schema a un DataSet utilizzando FillSchema.

Dim custDataSet As DataSet = New DataSet()

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

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

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

Dim custDataSet As DataSet = New DataSet()

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

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

Gestione di più set di risultati

Se l'oggetto DataAdapter rileva più set di risultati restituiti da SelectCommand, verranno create più tabelle nel DataSet. Alle tabelle viene assegnato un nome predefinito incrementale in base zero TableN, che inizia con Table anziché con "Table0". Se il nome di una tabella viene passato come argomento al metodo FillSchema, alle tabelle verrà assegnato il nome incrementale in base zero TableNameN, che inizia con TableName anziché con "TableName0".

NotaNota

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

Vedere anche

Altre risorse

DataAdapter e DataReader (ADO.NET)

DataSet, DataTable e DataView (ADO.NET)

Recupero e modifica di dati in ADO.NET