2009-04-14 2 views
1

У меня есть сущность Рецепт, и у него есть 3 коллекции изображений, комментариев и ингредиентов. Они отображаются как сумка.Nhibernate - Не удается получить несколько коллекций в одном запросе

Для веб-сайта, я хочу, чтобы загрузить коллекции рецепт с рецептом, то есть не ленивые нагрузки, так что я обнаружил, что я мог бы сделать это с помощью этого запроса:

from Recipe r 
left join fetch r.Images 
left join fetch r.Ingredients 
left join fetch r.Comments 

Но это дает исключение:

не удается получить несколько коллекций в одном запросе, если один из них мешок

Так как я не ленивый загрузить мой рецепт и загружать коллекции, учитывая тот факт, что в этой коллекции не может быть строк? Я новичок в этом и нуждаюсь в объяснении.

ответ

0

Оформить коллекцию как набор.

Сумка представляет собой коллекцию, которая может содержать несколько копий одного и того же предмета.

1

Изменение наборы позволит это, но вы уверены, что это то, что вы хотите сделать?

«Извлечение нескольких дочерних коллекций таким образом потенциально очень плохо для вашей производительности системы. Вы можете очень легко получить декартовский продукт, получая многократно количество строк, необходимых вам из базы данных.

Ayende указывает на потенциальную проблему here

Вы можете посмотреть на session.CreateMultiQuery() или session.CreateMultiCriteria() вместо этого.

1

Чтобы избежать декартового запроса. Я бы выполнил 3 запроса, используя фьючерсы и оставшиеся внешние соединения.

Смежные вопросы