2010-02-20 4 views

답변

1

쿼리 당 가져 오기 모드를 동적으로 변경할 수 있습니다.

IList cats = sess.CreateCriteria(typeof(Cat)) 
    .Add(Expression.Like("Name", "Fritz%")) 
    .SetFetchMode("Mate", FetchMode.Eager) 
    .SetFetchMode("Kittens", FetchMode.Eager) 
    .List(); 

documentation의 12.5 절을 참조하십시오.

+0

UI 레이어에서이 API를 사용하고 싶지 않기 때문에 ICriteria API를 숨길 수있는 BestPractice가 있습니까? 내 repository.GetAll 메소드에 대한 오버로드를 작성해야합니까? 아니면 다른 권장 사항이 있습니까? – Rookian

+0

나는 당신이 의미하는 바를 잘 모릅니다. UI에서 쿼리 기능을 제공하는 방법에 대해 걱정이된다면 http://jnb.ociweb.com/jnb/jnbNov2003.html의 "쿼리 API 래핑"을 살펴보십시오. 그렇지 않으면 일반적으로 UI 레이어는 데이터 액세스 레이어에 의존하는 비즈니스 계층에 따라 달라지며 nhibernate 항목은 대개 데이터 액세스 레이어에 있습니다. – ewernli

+0

이제 GetAll 메서드를 재정의합니다. 나는 못생긴 끈을 좋아하지 않는다. 나는 이것을위한 약간의 도우미 클래스를 쓴다고 생각한다. 지금까지 감사드립니다. – Rookian

1

쿼리의 경우 - 예 :

+0

좀 더 자세한 정보를 제공 할 수 있습니까? – Rookian

+0

다음은 Ayende의 좋은 설명입니다. http://ayende.com/Blog/archive/2010/01/16/eagerly-loading-entity-associations-efficiently-with-nhibernate.aspx (HQL). @ewernli에서 가져온 ICriteria 예제. – dariol

관련 문제