LINQ를 사용하여 nhibernate에서 객체 및 자식 수집 검색
-
05-09-2019 - |
문제
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는 여전히 생산 준비와는 거리가 멀기 때문에 이러한 종류의 버그가 발생할 수 있습니다.
제휴하지 않습니다 StackOverflow