vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

ADO.NET / Datenbanken
Problem mit dem Speichern einer Master/Child-Beziehung 
Autor: Hofi61
Datum: 27.10.11 23:19

Hallo,

Visuale Studio 2010 auf W7x64
Programmiersprache VB.NET
SQL-Server 2008 R2 Express Edition auf W2K8R2 Server

Ich arbeite mit ADO.NET, da die Abfragen dynamisch gestaltet sind.
Um mich nicht auf die Datenbank festzulegen verwende ich ProviderFactory für den Zugriff.

Ich habe 2 Tabellen, eine Master und eine Child welche mit einer 1:n Beziehung miteinander verbunden sind. Die Mastertabelle hat ein ID-Feld (Autoincrement) welches als Fremdschlüssel in der Childtabelle gespeichert wird. Ein Verweis auf eine weitere Tabelle und der Programmcode stellen sicher, dass im jeweiligen Fall immer nur genau ein Datensatz der Childtabelle zum aktuellen Datensatz der Mastertabelle passt.

In einer zum Bearbeiten gesperrten DataGridView werden alle Spalten der Master/Slave-Beziehung angezeigt und Navigiert. Die zum Bearbeiten freigegebenen Felder des ausgewählten Datensatzes werden in separaten Text- DropDown- und Checkbox Feldern zur Verfügung gestellt.

Ich habe 3 Datenadapter erstellt:
daMaster mit CommandBuilder enthält die Tabelle Master komplett
daChild mit CommandBuilder enthält die Tabelle Slave komplett
daDGV enthält alle Datensätze aus Master verknüpft mit je einem Datensatz aus Child für die Darstellung im DGV.
Alle Tabellen befinden sich in einem DataSet, welches auch die Relation zwischen Master und Slave enthält. Zum Sortieren und Suchen werden von Master und Slave noch DataViews erstellt.

Zum Anzeigen und Bearbeiten in den einzelnen Textfeldern werden über die ausgewählte Zeile des DGV aus den DataViews von Master und Child 2 DataRowViews erstellt. Welche über Edit bearbeitet werden können, über AddNew neu erstellt oder auch gelöscht werden können.
Nach jeder Änderung wir das DGV wieder aktualisiert.

Am Ende werden die Änderungen in den Tabellen Master und Child über GetChange abgefragt und über Update(mit CommandBuilder) zurück geschrieben.

Das Ganze funktioniert beim Verändern eines Datensatzes ohne Probleme, löschen macht auch keine Probleme.

Nur beim Anlegen eines neuen Datensatzes habe ich folgendes Problem:
Die Auto-ID-Spalten werden dank MissingSchemaAction.AddWithKey beim Editieren der DRV automatisch erzeugt und per Code vom Master in den Client übertragen, was bis zum DGV auch einwandfrei funktioniert. Erst wenn ich die Daten über Update zurückschreiben will, wird die ID durch den SQL-Server beim Master ersetzt und erzeugt beim Speichern des Childs einen Fehler(referentielle Integrität), da dessen gespeicherte ID(Fremdschlüssel) mit dem Master nicht mehr übereinstimmt.

Wie kann ich das Problem lösen? Alle gefundenen Beispiele verwenden die RowUpdating/RowUpdated-Ereignisse, welche aber bei ProviderFactory nicht finden kann.

Gruß Hofi
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Problem mit dem Speichern einer Master/Child-Beziehung1.976Hofi6127.10.11 23:19
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.291ModeratorFZelle28.10.11 09:53
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.109Hofi6128.10.11 10:26
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.134ModeratorFZelle28.10.11 10:39
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.292Hofi6128.10.11 12:30
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.120ModeratorDaveS28.10.11 12:51
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.134ModeratorFZelle28.10.11 13:57
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.208Hofi6128.10.11 14:12
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.217Blacky20.11.11 11:50
Re: Problem mit dem Speichern einer Master/Child-Beziehung1.133Hofi6120.11.11 12:43

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel