2010-01-27 4 views
0

다음 코드가 영어로 설명 할 수 있습니까?NHibernate에 대한 ICriteria 이해

var subCriteria = DetachedCriteria.For<UserLocation>(); 

subCriteria.SetProjection(Projections.Property("LocationId")) 
      .Add(Restrictions.Eq("UserId", userId)); 

return UoW.Session.CreateCriteria(typeof(Location)) 
     .Add(Subqueries.PropertyIn("LocationId", subCriteria)).List<Location>(); 

답변

2

코드를 실행하여 생성 된 SQL을 볼 수 있습니까?

나는 그것이 이것에 아주 가까이 뭔가 것 같은데요 : 그들의 사용자 아이디를 기반으로 특정 사용자에 대한 모든 위치를 찾기 위해 노력하고있는 것처럼

SELECT * 
FROM Location 
WHERE LocationId IN (SELECT LocationId FROM UserLocation WHERE UserId = @UserId) 

것 같습니다.

Subqueries.PropertyIn은 "내부 선택"을 실행 중입니다.
SetProjection은 가능한 열의 하위 집합을 반환합니다.
WHERE 절을 작성하는 데 제한 사항이 사용됩니다.
DetachedCriteria 및 CreateCriteria는 SELECT 문을 작성하는 데 사용됩니다.
끝에있는 목록은 쿼리를 실행하고 지정된 유형의 개체 목록을 반환합니다.

관련 문제