2012-04-23 2 views
0

데이터베이스에서 쿼리를 실행하기 위해 nhibernate를 사용하여 MVC3에서 애플리케이션을 개발 중입니다.Icriteria nhibernate를 사용하여 조인을 수행하는 방법

두 개의 모델이 있습니다. HobbyMasters HObbyDetail

HobbyMaster 클래스를 포함합니다 :

HobbyId 
and other details 

HobbyDetail 클래스가 포함되어 있습니다 :

HobbyDetaild 
HobbyMasters hobbymaster 
other detals 

지금 내가 Icrteria 사용하여 두 테이블 사이에 존을 수행 할 :

ICriteria criteria = session.CreateCriteria<HobbyDetail>() 
        .CreateAlias("HobbyMasters", "HobbyMasters") 
        .Add(Restrictions.EqProperty("HobbyMasters.HobbyId", "HobbyDetail.hobbymaster.HobbyId")); 

또한이 :

HobbyDetail = session.CreateCriteria(typeof(HobbyDetail)) 
       .CreateAlias("HobbyMasters", "HobbyMasters", NHibernate.SqlCommand.JoinType.InnerJoin) 
       .Add(Restrictions.EqProperty("HobbyMasters.hobbymaster.HobbyId", "HobbyDetail.HobbyId")) 

하지만 난이 해결 Couldnot 말하는 오류가 발생 재산권 HobbyMaster HobbyDetail의 클래스

나에게 제발 도와주세요

+0

fyi,이 질문은 MVC와는 아무런 관련이 없습니다. – jrummell

답변

0
당신은 QueryOver을 사용할 수 있습니다

, 그것은 람다 표현식과 ICriteria에 래퍼 :

session.QueryOver<HobbyDetail>() 
    .Fetch(hobbyDetail => hobbyDetail.HobbyMasters).Eager 
    .TransformUsing(Transformers.DistinctRootEntity) 
    .List(); 
+0

HobbyDeatil에 대한 오류가 발생했습니다.이 범위를 선언 할 수 없습니다. bcz 다른 의미를 부여하고 오류를 가져옵니다. Transformers.DistinctRootEntity – user1274646

관련 문제