Nhibernate Lambdas는 Ordered Collection에 합류했습니다
-
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)
왜 이것이 필요한지, 처음에는 분명하지 않은 이유를 이해하기 위해 다른 방법으로 그것을 봐야합니다.
id == person.id (.add (p => p.id == person.id))와 동일한 '부모'친구 (friendalias)를 가진 사람 대상 (Personalias)을 요청하고 있습니다. personalias.latestlogin은 친구가 아닙니다.
제휴하지 않습니다 StackOverflow