하위 수준 개체에 필터를 배치하려는 개체 그래프를 검색하는 방법을 이해하려고합니다. 따라서 아래 수업을 고려하십시오. 나는 A의 전체 콜렉션을 B의 전체 콜렉션과 함께 검색하는 질의를 원하지만, C 콜렉션의 경우, "time"프라퍼티를 기반으로 특정 날짜 범위의 요소 만 검색하고 싶다. FluentNHibernate; QueryOver를 사용하여 하위 수준 개체에 필터를 적용하는 방법
나는이 자료 이해하려고 노력 해요 : http://nhforge.org/blogs/nhibernate/archive/2009/12/17/queryover-in-nh-3-0.aspx#Associations는 어쩌면 그것은 명백해야한다, 그러나 나는이 3 레벨 제한을위한 확장 기능을 사용하는 방법을보고 힘든 시간을 가지고있다. 그럼 정말 도움을 좀 주겠다.
Class A
public List<B> Bs;
Class B
public List<C> Cs;
Class C
public DateTime time;
내 시도는 지금까지 :하지만 그것은 예외입니다; 타입 오브젝트 전송할
IQueryOver<A, B> q = session.QueryOver<A>()
.JoinQueryOver<B>(a => a.Bs).JoinQueryOver<C>(b => b.Cs)
.Where(e => e.time.Date == System.DateTime.UtcNow.Date);
없습니다 'NHibernate.Criterion.QueryOver
2[A,C]' to type 'NHibernate.IQueryOver
2 [A, B].
"var"는이 문제를 해결합니다. 예외 메시지에서 나는 단지 IQueryOver 을 IQueryOver 으로 변경한다고 말하고 싶습니다. 두 번째 제네릭은 항상 마지막으로 JoinQueryOver가 될 것입니다. 대안은 별칭의 조인 (내 기본 설정)을 사용하는 것입니다. – Sam