Nhibernate - Невозможно получить несколько коллекций в одном запросе - PullRequest
1 голос
/ 14 апреля 2009

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

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

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

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

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

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

Ответы [ 3 ]

1 голос
/ 14 апреля 2009

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

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

Айенде указывает на потенциальную проблему здесь

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

1 голос
/ 16 мая 2012

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

0 голосов
/ 14 апреля 2009

Отобразить коллекции как набор.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...