Forum: ADO.NET |
Thema:
prinzipielle Vorgehensweise bei Autowerten |
Von:
Chris Nöther (
16.11.2006 10:57) |
Hallo allerseits,
ich arbeite mich gerade anhand eines kleineren Projektes für die Firma in ADO.NET 2 ein, und stoße auch gleich auf ein Problem, bei dem ich nicht weiß, wie man das prinzipiell löst. Ich habe eine Tabelle (SQL-Server 2000) mit einem Primärschlüssel, der durch den Server selbst vergeben wird. D.h., dass ich bei Erzeugung neuer Sätze im Dataset keinen Primärschlüssel habe. Andererseits brauche ich aber einen für das (hoffentlich später mal) einwandfreie Funktionieren des Programms. Was kann ich tun? Mit fallen zwei Möglichkeiten ein:
1. Entgegen der ADO.NET-Philosophie füge ich sofort nach Erstellen eines Satzes im Dataset diesen auch auf dem Server ein und versuche dann, die ID rauszukriegen, dazu gibt es ja diesen Artikel (http://beta.devtrain.de/artikel.aspx?artikelid=779).
2. Ich erweitere die Tabelle im Dataset zur Laufzeit mit einer weiteren Spalte, in der ich eine eindeutige ID für den Satz speichere (kann man das auch automatisch machen lassen?), mit der ich dann arbeiten kann. Zum Schluss schreibe ich die Daten ausser der neuen Spalte zurück und dort bekommen sie dann eben ihre endgültigen IDs.
Irgendwie habe ich aber das Gefühl, dass beides nicht optimal ist und dass es doch vermutlich auch hierfür eine einfachere Lösung gibt, da doch dieses Problem permanent mit DBs auftritt.
Angemommen, die zweite Variante wäre vorzuziehen, was mache ich bei einer zweiten Tabelle, die für neue Sätze einen Schlüssel aus der ersten braucht? Dann wird doch das Zurückschreiben gar nicht mehr über ein einziges adapter.update(dataset) funktionieren, dann muss ich die Sätze der Tab2 doch selbst denen der Tab1 zuweisen, oder?
Ja, also, wie macht man sowas?
Vielen Dank für Eure Tipps ...
Chris
Betreff |
Von |
Datum |
|
|
AW: prinzipielle Vorgehensweise bei Autowerten
Hallo, Chris,
machst du das DatenbankHandling über den DataAdapter ?
Der macht das beim Insert automatisch und holt sich die Id
in die ensprechende PrimaryKey-Spalte.
Ansonsten kannst du an den... |
|
|
|
|
|
Guido
Nachtigall
|
16.11.2006 11:51 |
|
|
Chris
Nöther
|
16.11.2006 12:09 |
|
|
AW: AW: AW: prinzipielle Vorgehensweise bei...
Hallo, Chris,
ich fände es merkwürdig, eine Order einzutragen ohne Kundennummer. Schließlich braucht diese eine Zuordnung.
Wenn du allerdings alles gleichzeitig anlegen willst (Kunde und Order),... |
|
|
|
|
|
Guido
Nachtigall
|
16.11.2006 12:51 |
|
|
AW: AW: AW: AW: prinzipielle Vorgehensweise...
Ja, eine temporäre ID zu generieren ist ja kein Problem. Aber eben später die Orders, die den nur temp. Kunden-IDs zugeordnet sind, dann den korrekten, endgültigen Kunden_IDs zuzuordnen, das stelle... |
|
|
|
|
|
Chris
Nöther
|
16.11.2006 13:13 |
|
|
Bernhard
Grojer
|
16.11.2006 16:41 |
|
|
AW: AW: AW: AW: AW: AW: prinzipielle...
Hallo,
einen neuen Schlüssel kann ich nicht nehmen, da ich an der Datenstruktur nichts ändern kann (wird auch anderweitig benutzt). Ich habe aber gestern auch in einem anderen Forum gepostet, und... |
|
|
|
|
|
Chris
Nöther
|
17.11.2006 08:14 |
|
|
Antworten
Vorsicht bei der Eingabe: Die Zeichen ' oder -- sind nicht erlaubt!