2010-12-05 7 views
0

nHibernate 튜토리얼의 여름을 통해 작업하는 것은 쿼리에 관한 섹션을 살펴 보았다. 그 시리즈가 만들어진 이후로 변화가 있었던 것 같습니다. 그래서 나는 NHB 3.0 온라인 문서에 갔다하지만, 코드 등 :nHibernate 3.0 쿼리

IList cats = session.CreateCriteria(typeof(Cat)) 
      .Add(Expression.Like("Name", "Fritz%")) 
      .Add(Expression.Between("Weight", minWeight, maxWeight)) 
      .List(); 

오류를 생성

코드 '이름'표현 '은 현재 컨텍스트에 존재하지 않습니다 "와 같은 :

return session.CreateCriteria(typeof(DataTransfer.Customer)) 
      .Add(new NHibernate.Criterion.LikeExpression("Firstname", firstname)) 
      .Add(new NHibernate.Criterion.LikeExpression("Lastname", lastname)) 
      .List<Customer>(); 

작동하지만 GtExpression과 같은 여러 쿼리 메서드가 누락 된 것으로 보입니다. 온라인 문서가 최신 버전입니까? 그렇다면 표현식을 사용할 수없는 이유는 무엇입니까? 온라인 문서가 최신 버전이 아닌 경우 Criterion 인터페이스에 대한 설명은 어디에서 얻을 수 있습니까? 감사합니다.

답변

3

에 적합합니다.

어쨌든 Expression 클래스는 더 이상 사용되지 않습니다. 대신 Restrictions을 사용하십시오.

+0

네, 사용 설명서가 누락되었습니다. "제한 사항"에 대한 강조는 설명서로 인해 혼란 스럽습니다. –

+0

문제가 해결되면 대답을 수락대로 표시하십시오. –

0

이상한 것. 나는 여전히 Expression. * 정적 메서드를 사용하며 이것들은 여전히 ​​작동합니다. NH3.0의 최신 버전을 사용 하시겠습니까? 나는 Alpha 2 버전을 사용한다.

당신이 긴급 작업을해야 할 경우

는의가 QueryOver <> 기능을 해보자 :

return session.QueryOver<DataTransfer.Customer>() 
    .WhereRestrictionOn(u => u.Name).IsLike("Fritz%") 
    .AndRestrictionOn(u => u.Weight).IsBetween(minWeight).And(maxWeight) 
    .List(); 

그것은 당신이 using NHibernate.Criterion;를 추가하는 것을 잊었다 간단한 쿼리