Nhibernate Lambdas присоединился к заказанному коллекции
-
18-09-2019 - |
Вопрос
У меня есть сущность «человек», у человека есть коллекция друзей (также личностные лица)
Я хочу получить первых 10 друзей конкретного человека, заказанного последним слогом.
Мои лучшие усилия - это:
public static IList<Person> GetFriends(Person person, int count)
{
Person personAlias = null;
Person friendAlias = null;
ICriteria criteria = NHibernateSessionManager.Instance.GetSession()
.CreateCriteria(typeof (Person), () => personAlias)
.CreateCriteria(() => personAlias.Friends, () => friendAlias, JoinType.LeftOuterJoin)
.AddOrder(() => friendAlias.LatestLogin, Order.Desc)
.Add<Person>(p => p.ID == person.ID)
.SetMaxResults(count);
return criteria.List<Person>();
}
Что захватывает всех друзей -пользователей, но они не заказаны последним слогом. Любые идеи?
Решение
Я знаю, что это может звучать странно, но решение состоит в том, чтобы изменить линию:
.AddOrder(() => friendAlias.LatestLogin, Order.Desc)
с:
.AddOrder(() => personAlias.LatestLogin, Order.Desc)
Вы должны увидеть это наоборот, чтобы понять, почему это необходимо и не очевидно в начале.
Вы просите лиц объектов (личные), которые имеют одинакового «родительского» друга (Frewionalias) с id == person.id (.add (p => p.id == person.id)), поэтому вам нужно сортировать по Персоналы.
Не связан с StackOverflow