У меня есть эти объекты:LINQ к NHibernate: Невозможно использовать Linq Skip() и Take() с FetchMany
public class BlogPost {
public virtual int Id { get; set; }
public virtual IList<Keyword> Keywords { get; set; }
public virtual IList<BlogComment> Comments { get; set; }
}
public class BlogComment {
public virtual int Id { get; set; }
public virtual BlogPost Post { get; set; }
}
public class Keyword {
public virtual int Id { get; set; }
public virtual IList<BlogPost> BlogPosts { get; set; }
}
Я хочу, чтобы загрузить перемещаемый-список BlogPost
с их Keyword
с и комментарии -count. Поэтому я стараюсь это:
var entities = session.Query<BlogPost>()
.Where(t => t.Published)
.FetchMany(t => t.Keywords)
.OrderByDescending(t => t.UpdatedAt)
.Skip((pageNumber - 1) * pageSize).Take(pageSize)
.Select(t => new {
CommentsCount = t.Comments.Count(),
Post = t
})
.ToList();
Но происходит на следующие ошибки:
Указанный метод не поддерживается.
И когда я удаляю .Skip((pageNumber - 1) * pageSize).Take(pageSize)
, он работает! например
var entities = session.Query<BlogPost>()
.Where(t => t.Published)
.FetchMany(t => t.Keywords)
.OrderByDescending(t => t.UpdatedAt)
// remove the below line
//.Skip((pageNumber - 1) * pageSize).Take(pageSize)
.Select(t => new {
CommentsCount = t.Comments.Count(),
Post = t
})
.ToList();
Есть ли у вас идеи, пожалуйста, взять ряд строк, включив Keyword
s? Спасибо за любое предложение.
Я пользуюсь NHibernate 3.2 mapping by code
.
Благодарю. Итак, как я могу загрузить много-много ассоциаций QueryOver? Метод Fetch просто поддерживает связь «один ко многим» и «один к одному»! Можете ли вы загрузить «post.Keywords» и «post.Comments.Count», пожалуйста? –