4
트리를로드하는 중 문제가 발생했습니다.이 경우는 n 레벨의 자체 (계층 적) 엔티티가 있습니다. 질문은 ICriteria 또는 HQL을 사용하여 전체 트리를 열심히로드 할 수 있습니까?Eager NHibernate에서 트리를로드하는 중
미리 도움을 청하십시오. Ariel
트리를로드하는 중 문제가 발생했습니다.이 경우는 n 레벨의 자체 (계층 적) 엔티티가 있습니다. 질문은 ICriteria 또는 HQL을 사용하여 전체 트리를 열심히로드 할 수 있습니까?Eager NHibernate에서 트리를로드하는 중
미리 도움을 청하십시오. Ariel
예 ... 올바른 fetchmode를 설정하십시오.
분 안에 예제가 포함됩니다.
예 촬영 from here =>
IList cats = sess.CreateCriteria(typeof(Cat))
.Add(Expression.Like("Name", "Fritz%"))
.SetFetchMode("Mate", FetchMode.Eager)
.SetFetchMode("Kittens", FetchMode.Eager)
.List();
당신은 너무 =>
아이의 열망로드 아이
.SetFetchMode("Kittens.BornOn", FetchMode.Eager)
당신이 NHibernate에 Linq에를 사용하는 경우
에 지정할 수 있습니다
, 확장 메소드 사용 =>
var feedItemQuery = from ad in session.Linq<FeedItem>().Expand("Ads")
where ad.Id == Id
select ad;
그리고 람다 식으로 전달 된 문자열을 만드는 도우미 메서드를 사용하는 것이 좋습니다.
전체 트리를로드하도록 Criteria에 지시 할 가능성이 매우 높습니다. 하지만 나는 그것에 대해 알지 못하며 정확하게 필요한 것을 지정하는 것을 선호합니다 (모든 것을로드하는 것은 위험한 것처럼 보입니다).
this은 도움이됩니까?
FetchMode를 사용하여 엔티티와 관련된 콜렉션을로드 할 수 있다는 것을 알고 있지만, 다음 레벨뿐만 아니라 전체 트리를로드하려고합니다. 내가 할 것이다 당신의 접근 방식을 사용 : .SetFetchMode ("어린이", FetchMode.Join) .SetFetchMode ("Children.Children", FetchMode.Join) .SetFetchMode ("Children.Children.Children을" FetchMode.Join) 등 – Argons