2011-02-02 40 views
1

假设我有在功能NHibernate的实体,看起来像这样:流利的NHibernate:从集合加载项固定数量的

public class Feed 
{ 
    public virtual int FeedId { get; set; } 
    public virtual string FeedUri { get; set; } 
    public virtual string FeedTitle { get; set; } 
    public virtual string FeedHomePageUri { get; set; } 

    public virtual IList<FeedItem> Items { get; set; } 
} 

当我装上这个实体项目集合,是一个有如何告诉我的查询引擎只加载集合中的前10个项目?

假设在这个集合中有10000个项目 - 我只想偷看前10个。有没有办法做到这一点?

我知道集合是懒加载的,这不是我要求的。当我弹出泡泡并最终加载所有内容时,如果我只想要第一个10条记录时,如何阻止它查询所有10000条记录?

回答

0

简答:你不能“半载”一个集合。当它被加载时,所有的项目都是。

现在...你可以做的是使用filters,这只是在集合上创建的查询。

例子:

var feed = session.Get<Feed>(feedId); 
var first10Items = session.Filter(feed.Items, "") 
          .SetMaxResults(10) 
          .List<FeedItem>() 
+0

这看起来像它应该工作 - 我给它一个尝试,让你知道如何去。 – Aaronontheweb 2011-02-02 03:41:10