【发布时间】:2012-03-16 03:46:26
【问题描述】:
以下 nhibernate 查询引起了我的问题,因为它返回同一行的次数多于一次,因为子表有不止一行与提供的条件匹配。我想知道的是在 nhibernate 中执行相同查询但只获取 DataMappingBase 中的每一行一次的最有效/最佳实践。返回同一行的多个结果会破坏我返回的结果数量,因为我尝试将其限制为 25,但有时我会得到同一行 25 次。
MappedID id = null;
DataMappingBase mapBase = null;
NameDetails name = null;
dmbs = mappingSession.QueryOver<DataMappingBase>(() => mapBase)
.JoinAlias(() => mapBase.IDs, () => id).WhereRestrictionOn(() => id.SecondaryDataIDType).IsNull()
.JoinAlias(() => mapBase.Names, () => name).WhereRestrictionOn(() => name.Name).IsInsensitiveLike(request.Filter, MatchMode.Anywhere)
.Take(request.MaxResults)
.List();
我目前正在考虑将上面的查询转换为分离查询并删除“take”子句并让它只返回匹配行的 ID 并将其用于从“DataMappingBase”中选择的子查询中行 ID 在子查询返回的 id 中,但我不确定这是否是最好的方法。
【问题讨论】:
-
您使用的是 ISession 还是 IStatelessSession ?
标签: nhibernate