내가 주문 ID가 포함됩니다 IDictionaryNHibernate에이 IDictionary <string,int>
에 쿼리의 다음 문자열을 결과를 변환하려고하고 INT 아래 쿼리는 세 개의 오브젝트 주문에 가입해야 TradedQuantity에게
포함됩니다에 결과를 주조, OrderRevision 및 OrderEvent. 1 주문은 내부가 세 개의 객체에 가입하고 그 순서 이드에 공급 orderids의 목록과 일치하는 모든 순서 객체를 얻을에 어떤 쿼리가 시도되는 것은 많은 orderRevisions에게 많은 orderEvents
을 가질 수 1 OrderRevision을 가질 수 있습니다. 그런 다음 orderId를 기반으로 그룹을 수행하고 orderEvents 객체에서 최신 TradedQuantity를 가져옵니다. LatestTradedQuantity는 최신 OrderEvent에서 TradedQuantity가됩니다. 현재로서는 최신 orderevent는 가장 높은 OrderEventId 값을 가진 것으로 간주 될 수 있습니다.
OrderRevision revisionAlias = null;
Order orderAlias = null;
var query =
Session.QueryOver<OrderEvent>()
.JoinAlias(oe => oe.OrderRevision,() => revisionAlias)
.JoinAlias(oe => oe.OrderRevision.Order,() => orderAlias)
.Where(x => x.OrderRevision.Order.SourceSystem.Name.ToLower() == sourceSystem.ToLower())
.WhereRestrictionOn(x => x.OrderRevision.Order.Id).IsIn(orderIds.ToList())
.SelectList(list => list.SelectGroup(x => x.OrderRevision.Order.SourceOrderIdentifier)
.SelectMax(x => x.Id).Select(x => x.TradedQuantity))
.Select(x => new KeyValuePair<string, int?>(x.OrderRevision.Order.SourceOrderIdentifier, x.TradedQuantity)
);
이 쿼리는 예상 한대로 수행하지 않습니다. 도와 주시겠습니까 결과가 IDictionary로 캐스팅 될 수 있는지 알려주십시오.
답장을 보내 주셔서 감사합니다. 일단 내가 시험해보고 시험해 보면 나는 다시 너에게 올 것이다. – Sike12
감사합니다. Frederic – Sike12