Construir y hacer que el árbol jerárquico categoría infinita de tabla de categorías autorreferencial
-
26-09-2019 - |
Pregunta
Tengo una tabla Categories
en el que cada categoría tiene un ParentId
que puede referirse a CategoryId
de cualquier otra categoría que desea visualizar como HTML de lista de varios niveles, así:
<ul class="tree">
<li>Parent Category
<ul>
<li>1st Child Category
<!-- more sub-categories -->
</li>
<li>2nd Child Category
<!-- more sub-categories -->
</li>
</ul>
</li>
</ul>
Actualmente estoy recursiva Rendering una vista parcial y que pasa por la siguiente categoría. Funciona muy bien, pero que está mal porque estoy ejecutar consultas en una vista.
¿Cómo puedo hacer que la lista en un objeto de árbol y la memoria caché para su visualización rápida cada vez que necesito una lista de todas las categorías jerárquicas?
Solución
Crea una clase de vista modelo que es auto referencial.
poblarlo en la clase de modelo apropiado (o tal vez en su DataContext
clase parcial) utilizando la consulta se está ejecutando en la vista.
Wrap el método que hace la consulta en un método que los cheques y almacena el resultado en Cache
.
Asegúrese de que se invalida la memoria caché cada vez que se realizan cambios en el árbol de categorías.
Si la consulta se ejecuta una gran cantidad de consultas (una por cada nivel de árbol), y luego considerar la obtención de los contenidos de la tabla de categorías como una lista plana y luego usando LINQ a objetos para proyectar en la clase de vista del modelo.