2012-09-18 3 views
0

서로 다른 서브 클래스를 얻을 나는 다음과 같은 기관NHibernate에 페이징

class BaseClass 
{ 
    public int Id{get; set;} 
} 

class SubClassOne : BaseClass 
{ 
    public string MyPropertyOne{get; set;} 
} 

class SubClassTwo : BaseClass 
{ 
    public string MyPropertyTwo{get; set;} 
} 

가 지금은 페이징을 포함하여 하나의 그리드에 (유형 SubClassOne 및 SubClassTwo의) 기존의 모든 엔티티를 표시해야합니다.

문제는 모든 하위 클래스가 사용자가 검색 할 수 있고 따라서 쿼리에 필요한 고유 한 속성이 있다는 것입니다.

그래서 Future()는 페이징이 작동하지 않기 때문에 내가 말할 수있는 한 옵션이 없습니다. 순수한 SQL에서 나는 UNION으로 큰 쿼리를 만들 것입니다. 내가 아는 한 nhibernate는 UNION에서 직접 작동하지 않는다. 어떻게 든 직접 SQL을 사용하고 그 결과를 엔티티 SubClassOne 및 SubClassTwo로 변환 할 수 있습니까?

+0

, 단지 저와 I를 일관성있는 페이지를 얻을 수있는 ID로 더 나은 순서를 알 그것을 추가 할 것입니다. 귀하의 답변에 대해 – Arikael

답변

0

업데이트 :

그것은 형체를 쿼리와 함께 작동합니다

var results = session.Query<BaseClass>() 
    .Where(bc => ((SubClassOne)bc).MyPropertyOne == "Foo") 
    .ToList(); 

// or 
var results = session.QueryOver<BaseClass>() 
    .Where(bc => ((SubClassOne)bc).MyPropertyOne == "Foo") 
    .List(); 

참고 : 자세한 정보가 필요하면 당신은

+0

감사합니다. 하지만 기본 클래스를 쿼리 할 때 어떻게 하위 클래스의 속성에 액세스 할 수 있습니까? – Arikael

+0

덕분에 작동합니다. – Arikael