Следующий запрос nhibernate вызывает у меня проблемы, потому что он возвращает ту же строку больше, что один раз, когда дочерние таблицы имеют более одной строки, соответствующей заданным критериям. То, что я хотел бы знать, - это самая эффективная/лучшая практика в nhibernate для выполнения этого же запроса, но только для каждой строки в DataMappingBase. Возвращение нескольких из одной и той же строки приводит к нарушению числа возвращаемых результатов, поскольку я пытаюсь ограничить его 25, но иногда я получаю одну и ту же строку 25 раз.NHibernate multi table query возвращает одну и ту же строку более одного раза
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();
я в настоящее время смотрит на преобразование запроса выше отдельностоящий запроса и удаление «принять» положение и заставить его просто вернуть идентификатор согласующих строк и он используется в выборе суб-запроса от «DataMappingBase», где идентификатор строк находится в идентификаторах, возвращаемых подзапросом, но я не уверен, что это лучший способ или нет.
Вы используете ISession или IStatelessSession? – Danielg
@ Danielg ISession – Seer