Критерии NHibernate Сортировка от отношения «один ко многим» (свойство списка) - PullRequest
0 голосов
/ 25 августа 2011

У меня есть объект Effort и объект Schedule. Сущность Schedule представляет страницу, на которой отображаются усилия. Каждое усилие может иметь отдельный заказ на каждой странице расписания.

Так что лучшая структура БД для этого случая будет выглядеть так

Усилие -> ScheduleOrder (с позицией) <- Расписание так что один-ко-многим и многие-к-одному. </p>

Теперь мне нужно отсортировать усилия на странице, используя критерии NHibernate.

Так что мне нужно использовать что-то вроде свойства, которое возвращает Положение для каждого расписания. Я могу добиться этого, используя DB View или Property с настроенным запросом Select.

У кого-нибудь есть идеи, как лучше отсортировать отношения «один ко многим»?

1 Ответ

0 голосов
/ 25 августа 2011

с

class ScheduleOrder
{
    public virtual Effort Effort { get; set; }
    public virtual Schedule Schedule { get; set; }
    public virtual int Position { get; set; }
}

var efforts = session.CreateCriteria<ScheduleOrder>()
    .Add(Expression.Eq("Schedule", schedule))
    .AddOrder(Order.Asc("Position"))
    .SetFetchMode("Effort", FetchMode.Eager)
    .List()
    .Select(so => so.Effort);

или

class Schedule
{
    // LIst has a position
    public virtual IList<Effort> Efforts { get; set; }
}

HasMany(x => x.Efforts)
    .AsList("position");
// or
HasManyToMany(x => x.Efforts)
    .AsList("position");


// schedule.Efforts have the right order
...