nhibernate projection : provesion과 함께 기준 API를 사용하여 유형 유형을 얻는 방법

StackOverflow https://stackoverflow.com/questions/2260424

문제

 List<object[]> products = GetSession().CreateCriteria<Product>()
            .SetProjection(Projections.ProjectionList()
                               .Add(Projections.Property("Id"))
                               .Add(Projections.Property("Name"))
                               .Add(Projections.Property("Price"))
             )
             .List();
public class ProductRow
{
     public int Id { get; set; }
     public string Name { get; set; }
     public double Price { get; set; }
}

결과를 목록으로 어떻게 얻을 수 있습니까?u003CProductRow> 유형?

함수 projection.cast가 있지만 사용 방법에 대한 문서가 보이지 않습니다.

도움이 되었습니까?

해결책

결과 변압기를 설정할 수 있습니다.

var result = GetSession()
    .CreateCriteria<Product>()
    .SetProjection(Projections.ProjectionList()
        .Add(Projections.Property("Id"), "Id")
        .Add(Projections.Property("Name"), "Name")
        .Add(Projections.Property("Price"), "Price")
    )
    .SetResultTransformer(Transformers.AliasToBean<ProductRow>())
    .List<ProductRow>();

속성 이름을 가리키는 별칭의 사용에 주목하십시오. ProductRow 각 투영을 추가 할 때.

다른 팁

이 문제에 대한 해결책을 구체적으로 찾을 수 없었습니다. 며칠 전에 비슷한 질문을 게시했습니다. (http://stackoverflow.com/questions/3921457/nhibernate-entity-access-through-projection) 오류 메시지는 Nhibernate가 제품 클래스에서 카테고리라는 속성을 찾고 있기 때문에 오류 메시지입니다. 나는 하나가 없다고 생각합니다. 지금까지 찾을 수 있었던 일은 DTO를 사용하는 것입니다. 또한 발현 트리, 람다 표현식 및 표현 선거를 사용하여 동적 DTO 생성기와 동적 LINQ를 더 깊이 바라보십시오. 모두 비교적 복잡해 보입니다. 엔터티를 동적으로 설정하기위한 간단한 솔루션이 있었으면 좋겠다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top