NHibernate получает один элемент на категорию с одним запросом - PullRequest
0 голосов
/ 29 марта 2012

У меня есть класс новостей следующим образом:

    public class News
    {
        public virtual int Id { set; get; }
        public virtual string Title { get; set; }
        public virtual Category Category { set; get; }
        public virtual DateTime DateCreated { set; get;} 
    }

и есть класс категории;

public class Category
{
    public virtual int Id { set; get; }
    public virtual string Name { set; get;}
}

Таблица новостей заполнена данными.

Что мне нужночтобы получить одну новость на категорию, заказанную DateCreated.ОК Итак, я хочу получать последние новости из категории, но я хочу, чтобы все новости для всех категорий.

ОК. Я могу получать все категории и получать последние новости в каждой категории. Мне интересно, есть ли эффективный способ сделать это?это?

есть идеи?

Каков будет правильный синтаксис?

1 Ответ

1 голос
/ 31 марта 2012

На мой взгляд, самый чистый способ сделать это - добавить инверсную коллекцию в класс Category (это технически бесплатно, дайте мне знать, если вам нужна помощь с отображением):

public virtual ICollection<News> NewsItems { get; set; }

Итогда это простой запрос LINQ:

var results = from category in session.Query<Category>()
              select new
                     {
                         category,
                         LatestNews = category.NewsItems
                           OrderByDescending(x => x.DateCreated).FirstOrDefault()
                     };
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...