【发布时间】:2011-02-15 23:24:52
【问题描述】:
我有一个具有集合属性的根对象。
例如:
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 提供的功能与我所说的类似。
【问题讨论】:
标签: c# nhibernate fluent-nhibernate domain-driven-design