Nhibernate Lambdas присоединился к заказанному коллекции

StackOverflow https://stackoverflow.com/questions/1693885

  •  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)), поэтому вам нужно сортировать по Персоналы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top