Запрос NHibernate Criteria для выбора самого последнего элемента для каждого типа - PullRequest
1 голос
/ 25 мая 2011

Мне нужно найти самый последний отчет, представленный сотрудниками, используя запрос критериев NHibernate. Я уверен, что мне нужно использовать проекции, но я не могу понять, как их настроить.

Перефразируя мою модель домена:

public class Employee
{
  public int Id {get; set;}
  public string Name {get; set;}
}

public class Report 
{
  public int Id {get; set;}
  public DateTime? Submitted {get; set;}
  public Employee Employee {get; set;}
  // Other report properties omitted
}

Если в штате было 5 сотрудников, у каждого из которых по 7 отчетов, запрос должен возвращать 5 отчетов, по одному на сотрудника, при этом свойство Submitted не равно нулю и является самым последним для этого сотрудника .

1 Ответ

1 голос
/ 25 мая 2011

Я не совсем уверен в этом, но зацените:

var rst = session.CreateCriteria<Report>()
                .SetProjection(Projections.GroupProperty("Employee"))
                .SetProjection(Projections.Max("Submitted"))
                .Add(NHibernate.Criterion.Expression.IsNotNull("Submitted")).List();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...