Вытягивайте Top X только с помощью Fluent NHibernate HasMany - PullRequest
0 голосов
/ 08 ноября 2011

У меня есть следующее сопоставление в Fluent-NHibernate Map

public class PostMap : ClassMap<Post>
{
    public PostMap()
    {
        Id(i => i.Id).GeneratedBy.GuidComb();
        Map(x => x.SiteId);
        Map(x => x.Message);
        Map(x => x.DateCreated);
        Map(x => x.DateModified);
        HasMany(x => x.Comments)
            .OrderBy("DateCreated DESC")
            .ReadOnly()
            .Not.LazyLoad();
    }
}

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

Ответы [ 2 ]

0 голосов
/ 18 апреля 2019

Вы можете сделать это вручную. Игнорируйте свойство Comments из Post сопоставления и загрузите его вручную с помощью Take(X):

// query posts
foreach (var post in posts)
{
    post.Comments = Session.QueryOver<Comments>()
                        .Where(x => x.PostId == post.Id)
                        .Take(X)                       
                        .Future();
}

С Future вместо List для всех комментариев будет выполнено одно обращение к БД.

0 голосов
/ 09 ноября 2011

Должно быть возможно с фильтрами.Читайте здесь: http://nhibernate.info/doc/nh/en/index.html#filters

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...