nhibernate projection : provesion과 함께 기준 API를 사용하여 유형 유형을 얻는 방법
-
20-09-2019 - |
문제
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를 더 깊이 바라보십시오. 모두 비교적 복잡해 보입니다. 엔터티를 동적으로 설정하기위한 간단한 솔루션이 있었으면 좋겠다.
제휴하지 않습니다 StackOverflow