Нетерпеливо загрузите рекурсивное отношение

from itertools import izip_longest

def chunker(iterable, chunksize, filler):
    return izip_longest(*[iter(iterable)]*chunksize, fillvalue=filler)
7
задан HappyNomad 3 August 2009 в 16:01
поделиться

2 ответа

См. Сайт Айенде: Эффективный выбор дерева . Я успешно использовал эту технику в своих приложениях. С ICriteria это выглядит так:

session.CreateCriteria<Category>()
    .SetFetchMode("SubCategories", FetchMode.Join)
    .SetResultTransformer(new DistinctRootEntityResultTransformer())
    .List<Category>()
    .Where(x => x.ParentCategory == null);

Основное различие между этой версией и тем, что вы пробовали, заключается в том, как применяется фильтр «ParentCategory == null». Его нужно исключить из запроса, который отправляется в базу данных, чтобы получить все дерево, но нам все еще нужен запрос, чтобы возвращать только корневые узлы дерева, поэтому мы будем использовать linq для поиска тех, которые находятся после запрос к базе данных завершен.

8
ответ дан 7 December 2019 в 03:18
поделиться

Not sure if it helps but take a look at : map a tree in NHibernate

0
ответ дан 7 December 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: