Отчасти это связано с this.
Я хотел бы найти способ сортировки связанного (HasMany) результата коллекции непосредственно в запросе Nhibernate.Сортировка связанной коллекции в запросе Nhibernate
ICriteria criteria = Session.CreateCriteria(typeof(PortalPage));
criteria.CreateAlias("PartialViews", "vc");
criteria.AddOrder(Order.Asc("vc.ColumnNumber"));
criteria.Add(Property.ForName("Url").Eq(pageUrl));
return criteria.UniqueResult<PortalPage>();
Correcly генерирует выбор с помощью ORDER BY, но результат в связанной коллекции не упорядочен.
Я хотел бы избежать сортировки коллекции после того, как результат будет возвращен (например, с использованием linq в объекты), возможно ли это?
UPDATE: Как Стив предложил проблема может быть решена путем жесткого кодирования атрибута порядка в отображении как:
HasMany(x => x.PartialViews).KeyColumnNames.Add("PageId").AsBag().SetAttribute("order-by", "ColumnNumber");
Стив, если я понимаю, это заставит меня «жесткий код «порядок сортировки. Можно ли получить какой-то динамический результат с Linq2Nhibernate или другим способом? Если не так, как бы вы выразили одно и то же отображение в свободном nhibernate? – Ronnie
Ронни, я не уверен в получении динамического результата без сортировки после возврата коллекции с помощью метода OrderBy. Я подозреваю, что нет никакого способа сделать это надежно, и это связано с природой дочерних коллекций в объектной модели DDD - если дочерняя коллекция не имеет встроенного порядка сортировки (например, списка, а не набора или сумки), то это просто не имеют большое значение с точки зрения моделирования, чтобы вы могли указать порядок при извлечении данных. Мне нужно проверить синтаксис Fluent для сопоставления списка - я обновлю ответ, когда найду это! –