这个想法是获取所有组并获取成员。我只有提取活跃用户时遇到问题。你能救我吗?
映射:
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()实际上正在工作。这是一个讨厌的缓存。现在的问题是如何强制内部联接获取集合。目前正在进行左外连接。有什么想法吗?
答案 0 :(得分:1)
据我所知,你不能。对不起。但你可以随时尝试使用映射