Delen via


Bestaande beperkingen toevoegen aan een dataset

De opvulmethode van de DataAdapter vult alleen tabelkolommen DataSet en rijen uit een gegevensbron. Hoewel beperkingen doorgaans worden ingesteld door de gegevensbron, worden deze schemagegevens niet standaard toegevoegd aan de DataSet. Als u een DataSet wilt vullen met bestaande primaire-sleutelbeperkingsgegevens uit een gegevensbron, kunt u de Methode FillSchema van de DataAdapter aanroepen of de eigenschap MissingSchemaAction van de DataAdapter instellen op AddWithKey voordat u Fill aanroept. Dit zorgt ervoor dat de beperkingen van de primaire sleutel in de DataSet overeenkomen met de beperkingen in de gegevensbron. Informatie over beperkingen voor refererende sleutels is niet opgenomen en moet expliciet worden gemaakt, zoals wordt weergegeven in DataTable-beperkingen.

Als u schemagegevens toevoegt aan een DataSet voordat u deze invult met gegevens, zorgt u ervoor dat primaire-sleutelbeperkingen worden opgenomen in de DataTable objecten in de DataSet. Als er extra aanroepen worden gedaan om de DataSet in te vullen, worden de gegevens van de primaire sleutelkolom gebruikt om nieuwe rijen uit de gegevensbron te vinden met de huidige rijen in elke gegevenstabel en worden de huidige gegevens in de tabellen overschreven met gegevens uit de gegevensbron. Zonder de schemagegevens worden de nieuwe rijen uit de gegevensbron toegevoegd aan de DataSet, wat resulteert in dubbele rijen.

Notitie

Als een kolom in een gegevensbron wordt geïdentificeerd als automatisch verhogen, maakt u met de methode FillSchema of de methode Fill met een MissingSchemaAction van AddWithKey een DataColumn met een eigenschap AutoIncrement ingesteld op true. U moet echter zelf de waarden AutoIncrementStep en AutoIncrementSeed instellen. Zie AutoIncrement-kolommen maken voor meer informatie over kolommen die automatisch worden verhoogd.

Als u FillSchema gebruikt of de MissingSchemaAction instelt op AddWithKey , moet extra verwerking in de gegevensbron worden uitgevoerd om de primaire-sleutelkolomgegevens te bepalen. Deze extra verwerking kan de prestaties belemmeren. Als u de informatie over de primaire sleutel tijdens het ontwerp kent, raden we u aan expliciet de primaire-sleutelkolom of -kolommen op te geven om optimale prestaties te bereiken. Zie Primaire sleutels definiëren voor informatie over het expliciet instellen van primaire-sleutelinformatie voor een tabel.

In het volgende codevoorbeeld ziet u hoe u schemagegevens toevoegt aan een DataSet met behulp van 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");  

In het volgende codevoorbeeld ziet u hoe u schemagegevens toevoegt aan een DataSet met behulp van de eigenschap MissingSchemaAction.AddWithKey van de fill-methode :

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");  

Meerdere resultatensets verwerken

Als de DataAdapter meerdere resultatensets tegenkomt die worden geretourneerd door SelectCommand, worden er meerdere tabellen in de DataSet gemaakt. De tabellen krijgen een op nul gebaseerde incrementele standaardnaam van tabel N, te beginnen met Tabel in plaats van 'Tabel0'. Als een tabelnaam wordt doorgegeven als argument voor de methode FillSchema , krijgen de tabellen een incrementele naam op basis van nul van TableName N, te beginnen met TableName0 in plaats van 'TableName0'.

Notitie

Als de FillSchema-methode van het OleDbDataAdapter-object wordt aangeroepen voor een opdracht die meerdere resultatensets retourneert, wordt alleen de schemagegevens uit de eerste resultatenset geretourneerd. Wanneer u schemagegevens voor meerdere resultatensets retourneert met behulp van de OleDbDataAdapter, wordt u aangeraden een MissingSchemaAction van AddWithKey op te geven en de schemagegevens op te halen bij het aanroepen van de fill-methode.

Zie ook