Следующий запрос 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» и получение его только для того, чтобы вернуть идентификатор соответствующих строк и использовать его в подзапросе, выбирая из «DataMappingBase», где идентификатор строки находится в идентификаторах, возвращенных подзапросом, ноя не уверен, что это лучший способ или нет.