Autor Beitrag
Doug123
Hält's aus hier
Beiträge: 13



BeitragVerfasst: Di 19.02.08 15:31 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: 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 Threadstarter
Hält's aus hier
Beiträge: 13



BeitragVerfasst: 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:

ausblenden 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