Benutzer mit den meisten Antworten
Mehrere TableAdapter füllen

Frage
-
Hallo,
ich arbeite mit VB.Net 2010 Express dem Datenbankdesigner und habe ein DataSet mit ca. 20 Tabellen. Jede Tabelle hat ein TableAdapter. Ferner sind Views angelegt die natürlich auch auf einen TableAdapter basieren.
Ich ändere eine Tabelle und fülle danach den Tabellen-TableAdapter. Mein Problem ist, damit sind aber nicht die TableAdapter der Views gefüllt.
Gibt es einen Tipp wie man hier systematisch vorgehen sollte?
Gruss Klaus.
KR
Antworten
-
INNER JOIN ..... Selbst in diesem einfachen Fall ist der Generator nicht in der Lage Inserts oder Updates zu generieren.
Das ist völlig normal und auch ohne DataAdapter nicht lösbar. Wenn Daten mit JOIN verknüpft werden, dann können Datensätze der einen Tabelle in den Ergebnisdaten mehrfach auftreten (1:n – Verknüpfung). Ein Rückschreiben von in den Ergebnisdaten geänderten Datenobjekten ist dann nicht möglich, da in diesem Fall eine Inkonsistenz der Ergebnisdaten eintritt. Es ist bei mit Join gelesenen Daten IMMER erforderlich, nach Änderungen in der externen Datenbank die betroffenen Ergebnisdaten vollständig zurück zu lesen.Wenn mit Join anstelle von DataRelations gearbeitet werden muss, dann sollten die Daten mit einfachen Execute-Aufrufen zurückgeschrieben und ein nachfolgendes Neuladen der betroffenen Datensätze ausgeführt werden. Damit sind nicht so viele Tabellen erforderlich.--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Peter Fleischer Dienstag, 26. Juli 2011 15:20
- Als Antwort markiert KlaRa1 Mittwoch, 27. Juli 2011 00:34
Alle Antworten
-
Ein DataSet in einer Anwendung hält üblicherweise die Daten für einen in der Anwendung unterstützten Prozess. 20 Tabelle ist schon sehr heftig und mir noch nie untergekommen.Views sind lediglich Sichten, die die auf die eigentlichen Daten “schauen”. Da ist nichts zu laden. Vermutlich verstehst Du unter einer Sicht (View) etwas anderes.Systematisch solltest Du das Design Deiner Inline-Datenbank überdenken. Oft kann man externe Tabellen zusammenfassen und mit Join laden und damit eine einfache Inline-Datenbank (DataSet) nutzen. Damit reduziert sich auch der Ladeaufwand.--
Viele Gruesse
Peter -
Hallo Peter,
genau das tue ich. Hier ein Beispiel:
TableAdapter-Konfigurations-Assistent:
SELECT StatusEbenenVerlauf.Kurzbezeichnung, StatusEbenen.LangBezeichnung, StatusEbenenVerlauf.Datum, StatusEbenenVerlauf.Frist,
StatusEbenenVerlauf.[ID_Vorgänge]
FROM (StatusEbenen INNER JOIN
StatusEbenenVerlauf ON StatusEbenen.KurzBezeichnung = StatusEbenenVerlauf.Kurzbezeichnung)Selbst in diesem einfachen Fall ist der Generator nicht in der Lage Inserts oder Updates zu generieren. Folglich muss ich Updates auf jeden einzelnen TableAdaper manuell durchführen.
Wie gesagt, Ich nutzte mache Tabellen in mehreren TableAdaptern die ich dann gewissermassen als View z.B. für ein DataDridView nutze. Ich müsste also sicherstellen, dass nach einem Update jeder TableAdapter wieder gefüllt wird. Dies ist mein Problem.
Gruss Klaus.
KR -
INNER JOIN ..... Selbst in diesem einfachen Fall ist der Generator nicht in der Lage Inserts oder Updates zu generieren.
Das ist völlig normal und auch ohne DataAdapter nicht lösbar. Wenn Daten mit JOIN verknüpft werden, dann können Datensätze der einen Tabelle in den Ergebnisdaten mehrfach auftreten (1:n – Verknüpfung). Ein Rückschreiben von in den Ergebnisdaten geänderten Datenobjekten ist dann nicht möglich, da in diesem Fall eine Inkonsistenz der Ergebnisdaten eintritt. Es ist bei mit Join gelesenen Daten IMMER erforderlich, nach Änderungen in der externen Datenbank die betroffenen Ergebnisdaten vollständig zurück zu lesen.Wenn mit Join anstelle von DataRelations gearbeitet werden muss, dann sollten die Daten mit einfachen Execute-Aufrufen zurückgeschrieben und ein nachfolgendes Neuladen der betroffenen Datensätze ausgeführt werden. Damit sind nicht so viele Tabellen erforderlich.--
Viele Gruesse
Peter- Als Antwort vorgeschlagen Peter Fleischer Dienstag, 26. Juli 2011 15:20
- Als Antwort markiert KlaRa1 Mittwoch, 27. Juli 2011 00:34