Entwickler-Ecke
Datenbanken (inkl. ADO.NET) - Datensätze in einer Untertabelle löschen
Doug123 - Di 19.02.08 15:31
Titel: Datensätze in einer Untertabelle löschen
Guten Tag!
Ich habe zwei Tabellen "Autos" und "Ersatzteile" in einem DataSet und habe zwischen diesen beiden auch eine Relation hergestellt. Das Anlegen der Autos und der Ersatzteile klappt auch soweit z.B. mittels "DataAdapter.Update(ds, "Autos");". Nun möchte ich aber, dass wenn ich ein "Auto" lösche, alle dahinterliegenden "Ersatzteile" zu diesem Auto gelöscht werden. Wie lässt sich sowas denn realisieren?
Gruß
Doug
Kha - Di 19.02.08 16:06
Schau dir die DataRelation-Klasse einmal genauer an, besonders die ChildKeyConstraint-Eigenschaft. Wenn du das DataSet im Designer erstellt hast, kannst du auch einfach dort die Relation auswählen, auf "Edit Relation..." klicken und dort dann die Einschränkung einstellen (in diesem Fall: "Delete Rule: Cascade").
Doug123 - Di 19.02.08 17:14
Hallo! Erstmal danke für deine Antwort!
Bei mir will es bis jetzt einfach nicht klappen. Mein bisheriger Code sieht so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| daAutos.Fill(ds, "Autos"); daAutos.MissingSchemaAction = MissingSchemaAction.AddWithKey;
daErsatz.Fill(ds, "Ersatzteile"); daErsatz.MissingSchemaAction = MissingSchemaAction.AddWithKey;
DataRelation relation = new DataRelation("AutosErsatzteile", ds.Tables["Autos"].Columns["Guid"], ds.Tables["Ersatzteile"].Columns["Auto_Guid"]); ds.Relations.Add(relation);
ForeignKeyConstraint foreignKey = relation.ChildKeyConstraint; foreignKey.DeleteRule = Rule.Cascade; foreignKey.UpdateRule = Rule.None; foreignKey.AcceptRejectRule = AccecptRejectRule.Cascade; |
Das DataSet habe ich nämlich nicht über den Designer erstellt. Die Commands für die zwei DataAdapter habe ich auch erstellt. Lösche ich ein Auto, bleiben die Ersatzteile weiterhin vorhanden.
Gruß
Doug
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!