Tabellenzuordnung in Datenadaptern
Aktualisiert: November 2007
Wenn ein Datenadapter Daten aus einer Datenquelle liest, bestimmt er über eine Tabellenzuordnung, wo die Daten in der entsprechenden Dataset-Tabelle (oder den Dataset-Tabellen) eingefügt werden müssen. Die Zuordnung verbindet die Namen der Spalten in der Quelle mit denen in der Dataset-Tabelle. Spalten aus einer Tabelle mit dem Namen au_id in der Datenquelle könnten z. B. in eine Spalte mit dem Namen author_id_number in der Dataset-Tabelle gehören.
Hinweis: |
---|
In der vorherigen Version von Visual Studio wurden Datenadapter für die Kommunikation zwischen einer Anwendung und einer Datenbank verwendet. Während Datenadapter eine zentrale Komponente von .NET Framework-Datenanbieter (ADO.NET) darstellen, sind TableAdapters vom Designer generierte Komponenten, die das Verschieben von Daten zwischen der Anwendung und einer Datenbank vereinfachen. Weitere Informationen zum Verwenden von TableAdapter finden Sie unter Übersicht über TableAdapters. |
Wenn Sie ein Dataset mithilfe von Visual Studio-Tools aus Informationen einer Datenquelle generieren, haben die Elemente des Datasets standardmäßig denselben Namen wie in der Quelle. Gelegentlich kommt es jedoch vor, dass die Namen in der Datenquelle und die im Dataset nicht übereinstimmen:
Das Dataset wurde aus einem vorhandenen Schema erstellt, das andere Namen verwendet.
Sie möchten die Namen von Datenelementen im Dataset zwecks bequemer Verwendung, Lesbarkeit, Übersetzung in eine oder aus einer Fremdsprache oder aus anderen Gründen ändern.
Sie möchten die Namen der typisierten Datenmember steuern, wenn Sie ein Dataset aus dem Adapter generieren.
Struktur der Tabellenzuordnungen
Tabellenzuordnungen werden mit der TableMappings-Eigenschaft des Adapters erstellt, die eine Auflistung von Elementen vom Typ DataTableMapping darstellt. Für jede zugeordnete Tabellengruppe ist ein DataTableMapping-Objekt vorhanden. Normalerweise gibt es nur ein solches Element, weil Adapter in der Regel nur einer einzigen Quelltabelle und einer einzigen Dataset-Tabelle zugeordnet sind. (Eine gespeicherte Prozedur kann jedoch mehrere Rowsets zurückgeben. Wenn dies der Fall ist, werden die zweite und alle folgenden Tabellen mithilfe der zweiten und allen folgenden Zuordnungen in der TableMappings-Auflistung zugeordnet.)
Jedes Zuordnungselement enthält wiederum Eigenschaften, mit denen die Datenquellentabelle und die Dataset-Tabelle identifiziert werden, sowie eine ColumnMappings-Eigenschaft mit Elementen, die die tatsächlichen Zuordnungen darstellen.
Ausführen der Tabellenzuordnung
Wenn Sie die Fill-Methode eines Datenadapters aufrufen, führt der Adapter den folgenden Prozess aus, um zu bestimmen, an welcher Stelle die Daten im Dataset geschrieben werden müssen:
Der Adapter schlägt jeden Quellspaltennamen im TableMappings-Objekt nach.
Wenn er den Namen der Quellspalte findet, ruft er den übereinstimmenden (zugeordneten) Namen für die entsprechende Spalte in der Dataset-Tabelle ab.
Mit dem abgerufenen Namen aus Schritt 2 schreibt der Adapter die Daten aus der Quellspalte in die entsprechende Dataset-Spalte.
Es gibt eine Vielzahl von Bedingungen, die den Adapter an der Ausführung des oben beschriebenen Prozesses hindern können. Dies sind die beiden wichtigsten Bedingungen:
Für eine Quellspalte wird keine Zuordnung gefunden. Dies kann daran liegen, dass für die TableMappings-Eigenschaft nichts definiert wurde oder dass eine bestimmte Spalte nicht zugeordnet wurde.
Die zu schreibende Spalte ist im Schema des Datasets nicht definiert, und zwar unabhängig davon, ob sie in der TableMappings-Eigenschaft zugeordnet ist.
Der Adapter unterstützt zwei Eigenschaften, mit denen Sie angeben können, wie in diesen beiden Situationen zu verfahren ist. Bei diesen Situationen handelt es sich nicht unbedingt um Fehlerzustände, weil der Adapter das Dataset auch dann füllen kann, wenn eine der Situationen eintritt.
Mit der MissingMappingAction-Eigenschaft können Sie die Aktion angeben, die bei fehlender Zuordnung ausgeführt werden soll. Dabei sind folgende Einstellungen möglich:
Passthrough – Der Adapter versucht, die Spalte in eine Dataset-Spalte mit demselben Namen zu laden. Wenn keine Dataset-Spalte mit diesem Namen vorhanden ist, ist das Verhalten von der MissingSchemaAction-Enumerationseinstellung abhängig (siehe unten).
Ignore – Spalten, die nicht richtig zugeordnet wurden, werden nicht in das Dataset geladen.
Error – Löst einen Fehler aus.
Mit der MissingSchemaAction-Eigenschaft kann angegeben werden, welche Ereignisse eintreten sollen, wenn der Adapter versucht, Daten in eine Spalte zu schreiben, die im Schema des Datasets nicht definiert ist. Dabei sind folgende Werte möglich:
Add – Die Tabelle bzw. Spalte wird dem Schema und dem Dataset hinzugefügt.
AddWithKey – Die Tabelle bzw. Spalte wird dem Dataset und dem Schema zusammen mit Informationen zum Primärschlüssel hinzugefügt.
Ignore – Die Tabelle bzw. Spalte, die nicht im Schema des Datasets dargestellt ist, wird dem Dataset nicht hinzugefügt.
Error – Der Adapter löst einen Fehler aus.
Im Allgemeinen werden beide Eigenschaften zusammen festgelegt, um den spezifischen Anforderungen der Anwendung zu genügen. Durch das Festlegen der MissingMappingAction-Eigenschaft auf Passthrough und durch das Festlegen der MissingSchemaAction-Eigenschaft auf Add werden die Tabellen- und Spaltennamen aus der Quelle im Dataset automatisch dupliziert.
Umgekehrt könnten Sie in Anwendungen, in denen das Schema des Datasets streng definiert ist, eine Fehlerüberprüfung angeben. In einem solchen Fall würde das Abrufen von Daten aus einer Quelle ohne eine eindeutig definierte Zielspalte im Dataset die Verletzung einer Geschäftsregel oder einen anderen Fehler darstellen.
Geben Sie Ignore an, wenn Sie sicherstellen möchten, dass nur die Daten in das Dataset geladen werden, die Sie explizit im Schema definiert oder in der TableMappings-Eigenschaft zugeordnet haben. Dies ist nützlich, wenn der Adapter eine gespeicherte Prozedur oder eine SQL-Anweisung aufruft, die mehr Spalten enthält, als im Dataset benötigt werden.
Siehe auch
Aufgaben
Gewusst wie: Zuordnen von Datenquellspalten zu DataSet-Datentabellenspalten
Konzepte
Auffüllen eines 'DataSet' durch einen 'DataAdapter' (ADO.NET)
Erstellen von Datenanwendungen mit Visual Studio
Referenz
Dialogfeld "Tabellenzuordnungen"
Weitere Ressourcen
'DataAdapters' und 'DataReaders' (ADO.NET)