Ich habe eine selbstbezüglicher Rollentabelle, die eine BaumstrukturWie gehen Sie mit Auto Erhöhen IDs eine Baumstruktur zu einer Datenbanktabelle beharren ein ADO.NET DataSet und Dataadapter
ID [INT] AUTO INCREMENT
Name [VARCHAR]
ParentID [INT]
Ich verwende repräsentiert eine ADO.NET DataTable und DataAdapter zum Laden und Speichern von Werten in dieser Tabelle. Dies funktioniert, wenn ich nur untergeordnete Zeilen bestehender Zeilen erzeuge. Wenn ich eine untergeordnete Zeile mache, dann ein untergeordnetes Element dieses untergeordneten Elements und dann Update, wird der von der DataTable generierte temporäre ID-Wert in die ParentID-Spalte übernommen. Ich habe folgende Daten Relation Satz:
dataset.Relations.Add(New DataRelation("RoleToRole",RoleTable.Columns("ID"), RoleTable.Columns("ParentID")))
Und wenn ich neue Kind Zeilen in der Datatable machen nenne ich die SetParentRow Methode
newRow.SetParentRow(parentRow)
Gibt es etwas Besonderes Ich habe zu tun, um die ID-Erzeugung zu erhalten rekursiv zu propagieren, wenn ich Update auf dem DataAdapter aufrufen?
ADO.NET ist intelligent genug, um die Eltern-ID in das untergeordnete Element in einem Dataset zu schieben, wenn das übergeordnete Element aktualisiert wird, wenn ein Fremdschlüsselbeschränkungssatz vorhanden ist. Daher müssen Sie das übergeordnete Element vor dem untergeordneten Element speichern, aber nicht unbedingt das übergeordnete Element bevor Sie das verknüpfte Kind erstellen. Nicht versucht, wenn selbstreferenziell. – Murph