Copia del contenuto di un DataSet (ADO.NET)
È possibile creare una copia di un DataSet per utilizzare i dati senza influire su quelli originali o per poter utilizzare un subset dei dati contenuti in un DataSet. Quando si copia un DataSet, è possibile:
Creare una copia esatta del DataSet, inclusi lo schema, i dati, le informazioni relative allo stato della riga e le versioni di riga.
Creare un DataSet contenente lo schema di un DataSet esistente ma solo le righe a cui sono state apportate modifiche. È possibile restituire tutte le righe modificate oppure specificare un determinato DataRowState. Per ulteriori informazioni sugli stati delle righe, vedere Stati delle righe e versioni delle righe.
Copiare solo lo schema, o struttura relazionale, del DataSet, senza copiare alcuna riga. È possibile importare le righe in un tipo DataTable esistente utilizzando il metodo ImportRow.
Per creare una copia esatta del DataSet in cui siano inclusi sia lo schema che i dati, utilizzare il metodo Copy del DataSet. Nell'esempio di codice seguente viene illustrata la creazione di una copia esatta del DataSet.
Dim copyDataSet As DataSet = customerDataSet.Copy()
DataSet copyDataSet = customerDataSet.Copy();
Per creare una copia di un DataSet in cui siano inclusi lo schema e solo i dati che rappresentano righe Added, Modified o Deleted, utilizzare il metodo GetChanges del DataSet. Se si passa il valore DataRowState durante la chiamata del metodo GetChanges, è inoltre possibile utilizzare tale metodo per restituire solo le righe a cui sia associato uno stato della riga specificato. Nell'esempio di codice seguente viene illustrato come passare un valore DataRowState quando si chiama il metodo GetChanges.
' Copy all changes.
Dim changeDataSet As DataSet = customerDataSet.GetChanges()
' Copy only new rows.
Dim addedDataSetAs DataSet = _
customerDataSet.GetChanges(DataRowState.Added)
// Copy all changes.
DataSet changeDataSet = customerDataSet.GetChanges();
// Copy only new rows.
DataSet addedDataSet= customerDataSet.GetChanges(DataRowState.Added);
Per creare una copia di un DataSet in cui sia incluso solo lo schema, utilizzare il metodo Clone del DataSet. È inoltre possibile aggiungere righe esistenti al DataSet duplicato, utilizzando il metodo ImportRow della DataTable. Il metodo ImportRow consente di aggiungere dati e informazioni relative allo stato e alla versione di riga alla tabella specificata. I valori di colonna vengono aggiunti solo nel caso in cui i nomi di colonna corrispondano e il tipo di dati sia compatibile.
Nell'esempio di codice seguente viene creato un duplicato di un DataSet e vengono aggiunte le righe del DataSet originale alla tabella Customers nel DataSet duplicato per i clienti la cui colonna CountryRegion presenta il valore "Germany".
Dim germanyCustomers As DataSet = customerDataSet.Clone()
Dim copyRows() As DataRow = _
customerDataSet.Tables("Customers").Select("CountryRegion = 'Germany'")
Dim customerTable As DataTable = germanyCustomers.Tables("Customers")
Dim copyRow As DataRow
For Each copyRow In copyRows
customerTable.ImportRow(copyRow)
Next
DataSet germanyCustomers = customerDataSet.Clone();
DataRow[] copyRows =
customerDataSet.Tables["Customers"].Select("CountryRegion = 'Germany'");
DataTable customerTable = germanyCustomers.Tables["Customers"];
foreach (DataRow copyRow in copyRows)
customerTable.ImportRow(copyRow);