나는 nHibernate에 익숙하지 않고 쿼리 작성을 시도하고있다. 나는 그것을 올바르게하는 것처럼 보이지 않는다. 내 모델에는 "구성 요소"의 ICollection을 포함하는 "제품"이 있습니다. 문자 "G"로 시작하는 구성 요소 참조가있는 구성 요소가 포함 된 모든 제품을 찾아야합니다. 나는 이것을 시도했다 :nHibernate QueryOver and JoinQueryOver
var matching = session.QueryOver<Product>()
.JoinQueryOver<Component>(p => p.Components)
.Where(c => c.ComponentReference.StartsWith("G")).List();
그러나 나는 'Delegate System.Func >>가 1 개의 매개 변수를 취하지 않는다고 말하는 컴파일 오류가 발생한다.
은 내가 표현에 전달할 수 있습니다 JoinQueryOver에 과부하 >> 그래서 난은 ICollection이 IEnumerable을 구현하기 때문에 내 쿼리가 작동 것이라고 생각했을 것이다
있습니다.
.Cast 및 JoinAlias를 사용하여 다양한 방법으로 시도했지만 불필요하게 복잡해 보입니다.
어디서 잘못 알 수 있습니까?
미리 감사드립니다.
감사에 사용할 수 있습니다 당신의 도움. 나는 내 아이디어를 사용하여 일할 수있게되었지만 당신의 도움으로 2 가지 오류가 있음을 깨달았습니다. var matching = session.QueryOver() .JoinQueryOver (p => p.Components) .Where (c => c.ComponentCode.IsLike ("G", MatchMode.Start)). List(); 반환 일치; 내 오류 : 1) 잘못된 수업을 사용했습니다! (손바닥) ProductComponent이며 구성 요소가 아닙니다. 제품에 구성 요소가 아닌 ProductComponents의 ICollection이 있습니다. 2) IsLike가 아닌 StartsWith가 답변을 읽으면 구성 요소에 제품 속성이 없다는 것을 알았습니다. 잘못된 클래스를 사용하고있었습니다. 고맙습니다 :-) –
user3161050
나는 당신이 당신의 방식대로 그것을 할 수 있음을 알고있었습니다;) 단지 힌트가 필요했습니다. 포기 하지마. NHibernate 멋진 도구입니다. 제발, 시간을 보내고이 장을주의 깊게 읽으십시오 : http://nhforge.org/doc/nh/en/index.html#queryqueryover, 많은 도움이 될 것입니다 ... –