2009-09-04 2 views
3

누군가가 nhibernate에 대한 예제 기준을 도울 수 있는지 궁금합니다. 필자는 필드가 특정 값과 일치하는 주어진 테이블에서 레코드를 찾는 것과 같이 상당히 기본적인 것들에 대해 머리를 가졌다 고 생각합니다. 현재 내가 다른 테이블에 대한 외래 키가있는 테이블을 가지고있는 곳입니다. 두 번째 테이블의 일부 필드를 기반으로 첫 번째 테이블에서 행을 찾으려고 시도합니다. 나는 어떤 이름을 가진 회사에 속한 모든 사용자를 검색하는 기준을 만들 것 어떻게기준 빌딩 nhibernate

tblUser 
pk int ID 
    int CompanyID 
    string Name 

tblCompany 
pk int  ID 
    string CompanyName 

이있는 경우 예를 들어

...

? 적절한 매핑 파일/개체를 작성하는 방법을 이해한다고 생각합니다. 초기 개체의 하위 속성에 대한 기준을 만드는 방법을 파악할 수 없습니다.

모든 예제가 훌륭합니다. ,

답변

10

CRITERIAS 직접 하위 속성을 볼 수 없습니다, 그래서 당신은 하위 속성에 액세스하려는 경우는 별칭 또한, 중첩 된 속성에 같은 제한이 별칭이 존재

session.CreateCriteria<User>() 
    .CreateAlias("Company", "c") //the first argument is the property name from User 
    .Add(Restrictions.Eq("c.Name", companyName)) 
    .List<User>(); 

를 사용할 필요가 당신은 사용자가 있다면 그래서 -> 회사 -> 소유자 당신은 당신이 전체 쿼리에 대한 별칭을 사용하는 것을 선호하는 경우 기준을 만들 때뿐만 아니라 루트 개체를 별칭을 제공 할 수 있습니다, 또한 두 개의 별칭
.CreateAlias("Company", "c") 
.CreateAlias("c.Owner", "o") 

가 필요합니다.

session.CreateCriteria<User>("u") 
    .CreateAlias("u.Company", "c") 
    .Add(Restrictions.Eq("c.Name", companyName)) 
    .List<User>(); 
+1

당신은 내 전사가 완벽하게 일했습니다. – Adam

+0

답변 주셔서 감사합니다, KeeperOfTheSoul! 날 구해 줬어. 아마 당신이 팔을 팔뚝과 소년에게 쥐어 주면 너무 딱딱해질 것이기 때문에 당신이 나와 함께하지 않는 것이 좋습니다. 다시 도움을 주셔서 감사합니다! – SquidScareMe