Construir y hacer que el árbol jerárquico categoría infinita de tabla de categorías autorreferencial

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

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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top