2010-02-05 3 views
2

내 POCO 클래스에는 16 개의 열이있는 데이터베이스 테이블에 매핑되는 16 개의 특성이 있습니다. 이제 NHIbernate를 사용하여 테이블에서 열의 하위 집합 만 가져 오는 메서드를 작성해야합니다. 데이터베이스에서 지속 된 개체의 모든 특성을 가져 오려고 할 때이 작업을 수행하는 방법.NHIbernate로 선택한 열을 쿼리 하시겠습니까?

+0

유사? http://stackoverflow.com/questions/802251/lazy-loading-a-portion-of-a-record-with-nhibernate – Joel

답변

1

투영을 사용하면 쿼리의 엔터티 목록 이외의 항목을 반환 할 수 있습니다.

var proj = Projections.ProjectionList() 
    .Add(Projections.Property("Id"), "Id") 
    .Add(Projections.Property("Username"), "Username"); 

var list2 = DetachedCriteria.For<User>() 
    .Add(Expression.Eq("Username", "lachlan")) 
    .GetExecutableCriteria(sessionFactory.GetCurrentSession()) 
    .SetProjection(proj) 
    .List(); 

NHibernate는 투영 된 결과를 입력 목록에 매핑 할 수도 있습니다.

var proj = Projections.ProjectionList() 
    .Add(Projections.Property("Id"), "First") 
    .Add(Projections.Property("Username"), "Second"); 

var list2 = DetachedCriteria.For<User>() 
    .Add(Expression.Eq("Username", "lachlan")) 
    .GetExecutableCriteria(sessionFactory.GetCurrentSession()) 
    .SetProjection(proj) 
    .SetResultTransformer(Transformers.AliasToBean(typeof(Pair))) 
    .List<Pair>(); 
0

현재 릴리스는 클래스의 지연로드 부분을 지원하지 않습니다 (차후 릴리스에는이 기능이 포함됩니다).

현재로서는 workaround proposed here을 따라갈 수 있습니다.

관련 문제