我有一個具有屬性集合的根對象。作爲根屬性的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