Идея состоит в том, чтобы собрать все группы и выбрать участников.У меня проблемы с загрузкой только активных пользователей.Вы можете мне помочь?
Отображение:
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 () на самом деле работает.Это был неприятный тайник.Теперь проблема в том, как заставить внутреннее соединение извлекать коллекцию.На данный момент это делает левое внешнее соединение.Есть идеи?