문제

LINQ를 사용하여 NHIBERNATE를 사용하여 물체를로드하고 어린이 컬렉션을 간절히로드하는 데 문제가 있습니다. 물체는 다음과 같습니다.

public class Order
{
    public Guid Id {get; set; }
    public IList<OrderLine> OrderLines {get;set;}
}
public class OrderLine
{
    public Guid Id {get;set;}
    public string Item {get;set;}
}

나는 특정 ID로 주문을로드하려고 노력하고 있으며 LINQ를 사용하는 모든 어린이 순서 라인을 (를 간절히)로드하려고합니다. 내 쿼리는 다음과 같습니다.

using (var s = _sessionFactory.OpenSession())
using (var tx = s.BeginTransaction())
{
    var order = from o in s.Linq<Order>().Expand("OrderLines")
                where o.Id == id
                select o;
    return order.First();
}

그러나 순서를 표시하면 OrderLines 속성에는 하나의 객체 만 포함되어 있습니다 - 데이터베이스에는 확실히 3이 있습니다. order 반품 전에 나는 3 개의 자식 항목을 모두 얻습니다. 그러나 이것은 데이터베이스에 두 번칩니다.

사용할 쿼리 수정을 시도했습니다 Single() 대신, 그러나 그것은 작동하지 않습니다.

내가 LINQ에 뭔가 잘못하고 있습니까? 또는 나의 사용입니다 Expand 잘못된?

미리 감사드립니다.
사이먼.

참고 : NH 매핑을 만들기 위해 fluentnHibernate Autompaper을 사용하고 있으며 데이터베이스는 SQLITE 데이터베이스 (메모리가 아닌 파일)입니다.

도움이 되었습니까?

해결책

이 기능에는 버그가있는 것 같습니다.

FirstOrdeFault () breaks fetchType = linq와 함께 nhibernate에 가입

생성 된 데이터베이스 쿼리를 살펴보십시오. 상위 1 절이 있으면 문제가 될 수 있습니다.

linq to nhibernate는 여전히 생산 준비와는 거리가 멀기 때문에 이러한 종류의 버그가 발생할 수 있습니다.

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