2011-01-17 10 views
0

Hallo Ich habe eine Tabelle, die ein "ID" -Feld und ein "Parentid" -Feld hat. Beide Felder sind erforderlich, damit Sie NULL nicht in eine Parent-ID-Spalte einfügen können, um sie als "Root" für die Hierarchie zu markieren. Ich habe ein Problem mit linq wo, wenn ich eine neue "root" erstellen muss ich eine Dummy-Parentid einfügen, bis ich die ID der neuen root kennen, dann muss ich das Parentid-Feld mit der richtigen ID aktualisiert und speichern nochmal. Das scheint albern, aber ich habe noch keinen besseren Weg gefunden, dies zu erreichen.Self Referencing Tabelle LINQ

TableWithHeirachy xobj = new TableWithHeirachy(); 
xobj.property1 = "test"; 
db.TableWithHeirachy.InsertOnSubmit(xobj); 
db.SubmitChanges(); 
xobj.parentid = xobj.id; 
db.SubmitChanges(); 

Das scheint wirklich schlecht. Bitte sag mir, es gibt einen besseren Weg!

Antwort

1

Eine SQL-Anweisung kennt die zukünftige ID der einzufügenden Zeile erst, wenn die Einfügung abgeschlossen ist.

So, entweder weiter so wie Sie jetzt sind - oder verwenden Sie stattdessen spezielle Werte, um Stammdaten (Null, -1, usw.) anzuzeigen.