Das Erstellen von datenbankgesteuerten Objekten zum Auffüllen einer Baumansicht ist sehr langsam

StackOverflow https://stackoverflow.com/questions/56224

Frage

Ich habe eine Anwendung, die eine Tabelle aus einer Datenbank liest.

Ich gebe eine SQL-Abfrage aus, um eine Ergebnismenge zu erhalten, die auf einem eindeutigen Zeichenfolgenwert basiert, den ich aus den Ergebnissen erhalte. Ich verwende eine case/switch-Anweisung, um bestimmte Objekte zu generieren (sie erben übrigens TreeNode).Diese erstellten Objekte werden zur späteren Verwendung in ein Dictionary-Objekt überführt.

Beim Generieren dieser Objekte verwende ich einige Werte aus der Ergebnismenge, um das Objekt über die Setter mit Werten zu füllen.

Ich frage das Wörterbuch ab, um einen bestimmten Objekttyp zurückzugeben, und verwende ihn zum Füllen einer Baumansicht.Es ist jedoch nicht möglich, zwei Objekte desselben Typs in einer Baumansicht aus dem Dictionary-Objekt zu füllen (Sie erhalten einen Laufzeitfehler – der mir im Moment entgeht, etwas mit der Referenzierung desselben Objekts).Ich muss also einen memberwiseClone verwenden und IClonable implementieren, um dies zu umgehen.

Mache ich das richtig?Gibt es einen besseren Weg? Denn ich glaube, das führt dazu, dass mein Programm an dieser Stelle sehr langsam ist.Zumindest finde ich es etwas umständlich – jeder Rat von Leuten, die mehr wissen als ich, ist sehr dankbar.

War es hilfreich?

Lösung

@ Brad , bevölkert nur den Baum nach Bedarf. Das heißt, in den Fall des Baumknoten erweitert Einhaken. Dies ist ähnlich wie die Funktionen von Windows Explorer, wenn sie mit Netzwerkfreigaben zu tun.

Es sollte in dem Baum pro tatsächlichem Baumknoten 1 TreeNode Objekt sein - nicht versuchen, die Dinge wieder zu verwenden. Sie können entweder assoziieren sie mit Ihren Daten, die die Tag-Eigenschaft verwenden (dies ist die empfohlene Methode), oder können Sie die TreeNode selbst (dies ist die Java-Methode, sondern verwendet weniger in .NET) Unterklasse.

(Die Verwendung von Klonierungsverfahren ist in der Regel ein Hinweis, dass Sie entweder (a) etwas falsch zu machen, oder (b) benötigen Domänenmodell Faktor veränderbare Objekte von unveränderlich zu trennen.)

Andere Tipps

Gibt es einen Grund, warum Sie das externe Wörterbuch verwenden? Ich würde den Baum bevölkert direkt als Daten abgefragt werden.

Wenn Sie das Wörterbuch benötigen, können Sie die .Tag Eigenschaft des Baumknotens gesetzt könnten auf die Daten in Ihrem Wörterbuch zu zeigen.

haben Sie darüber nachgedacht, einen virtuellen Baumansicht verwenden, die nur die Knoten lädt der Benutzer tatsächlich will, betrachten - i mit der Komponente guten Erfolg gehabt haben von www.infralution.com

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top