Frage

Ich arbeite mit einem großen hierarchischen in SQL-Server-Daten - modellierte mit dem Standard „EntityID, ParentID“ Art von Ansatz. Es gibt etwa 25.000 Knoten im ganzen Baum.

Ich brauche oft Teilbäume des Baumes zu gelangen, und dann den Zugriff zugehörige Daten, die die Knoten des Unterbaums hängen ab. Ich baute vor eine Datenzugriffsschicht ein paar Jahren auf Basis von Tabellenwertfunktionen, rekursive Abfragen unter Verwendung eines beliebigen Unterbaum zu holen, der Wurzelknoten des Unterbaums gegeben.

Ich denke, Entity Framework verwenden, aber ich kann nicht sehen, wie hierarchische Daten abzufragen wie diese. AFAIK gibt es keine rekursiven Abfragen in Linq, und ich kann nicht eine TVF in meinem Unternehmen Datenmodell aus.

Ist die einzige Lösung unter Verwendung der gespeicherten Procs zu halten? Hat jemand anderes gelöst das?

Zur Verdeutlichung:. Mit 25.000 Knoten im Baum auf die Größe des hierarchischen Datensatz Ich beziehe mich nicht auf irgendetwas mit Gegenständen oder dem Entity Framework zu tun

War es hilfreich?

Lösung

Es ist vielleicht die beste, ein Muster zu verwenden, genannt „Nested Set“, mit dem Sie eine beliebige Teilstruktur innerhalb einer Abfrage erhalten können. Dies ist besonders nützlich, wenn die Knoten nicht sehr oft manipuliert werden: Verwalten von hierarchischen Daten in MySQL .

In einer perfekten Welt das Entity Framework würde Möglichkeiten bieten, um diese Datenmuster zu speichern und Abfrage von Daten verwendet wird.

Andere Tipps

Alles ist mit Entity Framework möglich, aber Sie haben zu hacken und Ihren Weg Slash in ihm. Die Datenbank arbeite ich zur Zeit gegen zu viele „Haltertabellen“, da Punkte zum Beispiel mit den beiden Teams und Benutzern gemeinsam genutzt wird. Beide Benutzer und Teams können auch einen Blog.

Wenn Sie sagen, 25 000 Knoten meinen Sie Navigationseigenschaften? Wenn ja ich denke, es schwierig sein könnte, die den Datenzugriff in Platz zu bekommen. Es ist nicht schwer zu navigieren, sucht usw. mit Entity Framework, aber ich neige dazu, auf Papier zu modellieren dann die Datenbank erstellen, basierend auf, wie ich will navigieren, während Entity Framework. Klingt wie Sie diese Option nicht haben.

Danke für diese Vorschläge.

Ich fange an zu erkennen, dass die Antwort ist, die Daten in der Datenbank neu zu gestalten -. Entweder entlang der Linien von verschachtelten Sätzen wie Georg vermuten läßt, oder vielleicht eine transitive Schließung Tabelle, die ich gerade über bin gekommen,

Auf diese Weise hoffe ich zwei wesentliche Vorteile zu bekommen:

a) schnelle Abfrage Aginst beliebige Teilbäume

b) ein Datenmodell, das nicht mehr rekursive Abfragen erfordert - so vielleicht ist es in der Nähe von Entity Framework zu bringen

!

Es ist immer wieder erstaunlich, wie so oft die richtige Antwort auf ein schwieriges Problem ist es nicht zu beantworten, aber stattdessen etwas anderes zu tun!

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