nhibernate запрос не загружается охотно со многими ко многим joinalias - PullRequest
4 голосов
/ 01 ноября 2010

Я пытаюсь загрузить роли во множестве разных коллекций из моего объекта User.

Role role = null;
IQueryOver<User, User> query = session.QueryOver<User>()
                                .Fetch( p => p.Roles).Eager
                                .JoinAlias( q => q.Roles, () => role)
                                .Where(() => role.Active == true);

оставляет меня с объектами пользователя, которые имеют неинициализированные роли участников.Если я удаляю joinalias, они инициализируются просто отлично.Это просто ошибка NH3 или я что-то не так делаю?

Ответы [ 2 ]

13 голосов
/ 02 ноября 2010

Еще один способ сделать активную загрузку - установить LeftOuterJoin.Это помогло нам в подобном сценарии

Role role = null;
IQueryOver<User, User> query = session.QueryOver<User>().Fetch( p => p.Roles).Eager
                                                        .JoinAlias( q => q.Roles, () => role, JoinType.LeftOuterJoin)
                                                        .Where(() => role.Active == true);
1 голос
/ 02 ноября 2010

Это ожидаемое поведение.Если вы используете JoinAlias, вы будете фильтровать элементы коллекции, поэтому она не может быть инициализирована.

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

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