Laden...

ForeignKeyConstraint und Merge()

Erstellt von andreas-82 vor 14 Jahren Letzter Beitrag vor 14 Jahren 533 Views
andreas-82 Themenstarter:in
42 Beiträge seit 2006
vor 14 Jahren
ForeignKeyConstraint und Merge()

N'Abend!
Folgendes Szenario:

  • Typisiertes DS (Kochrezepte).
  • Tabelle Zutat und Tabelle Einheit
  • Die Zutat besitzt einen Fremdschlüssel auf Einheit (Standardeinheit: Gramm, mL, etc.)
  • DataRelation mit Fremdschlüsseleinränkung dazwischen

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~

X
1.177 Beiträge seit 2006
vor 14 Jahren

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.