NHibernate: Как указать критерии при выборе «многие ко многим»? - PullRequest
1 голос
/ 16 декабря 2011

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

Отображение:

public class GroupDtoMap : DtoClassMap<GroupDto>
{
    public GroupDtoMap()
    {
        Id(g => g.Id, "group_id");
        HasManyToMany(g => g.Members) //  Members is a List<UserDto>
            .Table("members")
            .ParentKeyColumn("group_id")
            .ChildKeyColumn("user_id");
    }
}

Запрос:

var groups = Session
            .CreateCriteria<GroupDto>()
                .Add(Expression.Eq("IsActive", true)) // Get only active groups
                .SetFetchMode("Members", NHibernate.FetchMode.Eager)
                .SetResultTransformer(new DistinctRootEntityResultTransformer())
                .Future<GroupDto>();

Что япробовал, но все еще не удалось:

HasManyToMany(g => g.Members)
            .Table("members")
            .ParentKeyColumn("group_id")
            .ChildKeyColumn("user_id")
            .ChildWhere("status = 1");// the column in DB is 'status' with values 0/1

РЕДАКТИРОВАТЬ: ОК.Похоже, что ChildWhere () на самом деле работает.Это был неприятный тайник.Теперь проблема в том, как заставить внутреннее соединение извлекать коллекцию.На данный момент это делает левое внешнее соединение.Есть идеи?

1 Ответ

1 голос
/ 21 февраля 2013

Насколько я знаю, вы не можете. Извините. Но вы всегда можете попробовать сыграть с отображениями

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