N'Abend!
Folgendes Szenario:
Funktioniert an sich super, mir ist nur etwas (für mich) komisches aufgefallen:
Wenn ich mein (leeres) DataSet über die Merge()-Methode zuerst mit der Zutatentabelle fülle, obwohl die Fremdschlüssel ja ins Leere verweisen, weil die Tabelle Einheiten noch nicht im DS ist, wird keine Ausnahme geworfen.
Ändere ich aber direkt danach manuell im DataGrid einen Schlüssel, bekomme ich sofort eine InvalidConstraintException, wie es eigentlich sein sollte 🤔
Ist das gewollt, das eine über Merge() gefüllte Tabelle keine Constraints beachtet, oder hab ich da irgendwo eine Eigenschaft oder sowas übersehen?
Ps. EnforceConstraints des DS ist auf true.
~ There's no knowledge that is not power~
huhu,
ich denke, deine Beobachtung liegt am Merge-Befehl.
Du willst 2 Tabellen abgleichen. Bei ForeignKeys müsstest Du immer erst überprüfen ob der Key schon vorhanden ist in der dritten Tabelle und ggf. hinzufügen. Das muss vor dem Anfügen des gewünschten Datensatzes passieren. Da sind dann nochmals evtl. FKs vorhanden.
Ergo wird der Programmierer, der eine Merge-Routine schreibt, um 2 Tabellen zusammenzuführen, die FK-Constraint-Exeptions abfangen. Denn der geneigte Programmierer, welcher die Funktion verwenden will sollte vorher die Fremdschlüsseltabellen auch mergen.
Ich spekuliere, dass da ein Try-Catch vorhanden ist, welcher beim Merge verhindert dass eine FK-Exception weitergegeben wird. Entweder die FK-Tabelle wird dann anschliessend gemerged oder das liegt in der Hand des Programmierers.
😃
Xynratron
Herr, schmeiss Hirn vom Himmel - Autsch!
Die Erfahrung zeigt immer wieder, dass viele Probleme sich in Luft auslösen, wenn man sich den nötigen Abstand bzw. Schlaf gönnt.