我有一个具有属性集合的根对象。作为根属性的NHibernate IQueryable集合
例如:
I have a Shelf object that has Books.
// Now
public class Shelf
{
public ICollection<Book> Books {get; set;}
}
// Want
public class Shelf
{
public IQueryable<Book> Books {get;set;}
}
我想做到的是返回一个集合,是IQueryable的,这样我可以从父直接运行寻呼和过滤掉的集合。
var shelf = shelfRepository.Get(1);
var filtered = from book in shelf.Books
where book.Name == "The Great Gatsby"
select book;
我想有由NHibernate的具体执行的查询,并没有得到所有加载整个集合,然后在内存中分析它(这是当我使用的ICollection什么目前发生)。
这背后的原因是,我的收藏可能是巨大的,成千上万的记录,并且让所有的查询可以来砸我的数据库。
我想,这样当NHibernate的看在我的班级一个IQueryable它知道怎样做才能做到这一点含蓄。
我已经看过了NHibernate的LINQ提供程序,目前我正在服用大集合和他们分裂成自己的资源库,这样我可以作出的筛选和分页显式调用的决定。
的LINQ to SQL提供类似于我在谈论的东西。
谢谢你的解释如此详尽。我想过你说过的话,我同意你提出的所有观点。不知道NHibernate 3是否会支持这个开箱即用的功能。 – 2010-05-15 14:19:42