콜렉션 인 프로퍼티를 가진 루트 오브젝트가 있습니다. 예를 들어Hibernate 루트의 프로퍼티로서의 IQueryable 콜렉션
:
나는 부모로부터 직접 수집 떨어져 페이징 및 필터링을 실행할 수 있도록 된 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;}
}
.
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 상자에서 그냥 지원하는 것입니다. –