Hallo!

> aber ich glaube, du darfst die id gar nicht setzen,
> sie wird vielmehr automatisch erzeugt.
> auf mich kommt das problem �brigens auch noch zu,
> du kannst dich ja noch mal melden, wenn es funktioniert.

AutoIncrement-Felder m�ssen immer von der Datenbank gesetzt werden.

Aber das ist auch ein grunds�tzliches Problem, das schon unter ADO
aufgetreten ist: Immerhin ist es m�glich, dass bei einem AddNew auf zwei
verkn�pfte Tabellen der entsprechende Prim�rschl�ssel in einer der
Tabellen bereits vorhanden ist. Abh�ngig davon muss ADO ein oder zwei
INSERTs erzeugen. In ADO konnte man das mit der Eigenschaft "UNIQUE
TABLE" spezifizieren. Rein logisch k�nnte bei einem AddNew auf
verkn�pfte Tabellen auch ein INSERT und ein UPDATE erforderlich sein.
Hier scheitert ADO.

Beispiel:
SELECT a.*, b.* FROM a LEFT JOIN b ON b.id = a.childId

Wenn im INSERT-Statement nur Felder aus a oder nur Felder aus b gesetzt
werden, gibt es keine Probleme: Ein INSERT in a oder b! Werden Felder
aus a und b gesetzt, kann
 - ein INSERT in a oder
 - ein INSERT in b oder
 - ein INSERT in a und ein INSERT in b oder
 - ein INSERT in a und ein UPDATE in b oder
 - ein UPDATE in a und ein INSERT in b
erforderlich werden.

In ADO.NET ist es wichtig, die Beziehung im Dataset abzubilden und nicht
z. B. �ber eine View oder Stored Procedure. Dar�ber hinaus muss der
Datensatz der verkn�pften Tabelle vor der Haupttabelle eingef�gt werden.
Es sieht f�r mich so aus, als ob ADO.NET hier automatisch gar nichts
mehr macht, man also bei verkn�pften Tabellen immer selber pr�fen muss,
welche der beiden Tabellen bzw. Adapter in welcher Reihenfolge upgedatet
werden m�ssen. Der Programmierer muss jetzt mehr nachdenken, leidet aber
auch nicht mehr unter "Fehlinterpretationen" durch ADO. Wenn man also
grunds�tzlich erst die verkn�pften und zum Schluss die Haupttabelle
updatet ist man in ADO.NET auf der sicheren Seite.

Hat jemand andere oder erg�nzende Erfahrungen?

Freundliche Gr��e
Joachim van de Bruck


| [aspdedotnet] als [email protected] subscribed
| http://www.dotnetgerman.com/archiv/aspdedotnet/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.dotnetgerman.com/listen/aspDEdotnet.asp

Antwort per Email an