NHibernate Criteria with Distinct Parent Load All Children?

Ich habe eine Eltern-Kind-Beziehung, in der ich nur einen Elternteil zurückgeben und alle Kinder laden möchte. Ich verwende Kriterien, weil es sich um eine dynamische Abfrage handelt.

var messageQueueId = this.GetPropertyName<MessageQueue>(x => x.Id);

var query = _sessionManager.Session.CreateCriteria<MessageQueue>(QUEUE_ALIAS);

query.SetFirstResult(_pageOffset);
query.SetMaxResults(_pageSize);
query.Add(Restrictions.In(messageQueueId, _messageQueueIds));

query.List<MessageQueue>();

Dies gibt das übergeordnete Element (MessageQueue) zurück, nicht jedoch die untergeordneten Elemente (SearchMatches).

Wenn ich das versuche:

var query = _sessionManager.Session
    .CreateCriteria<MessageQueue>(QUEUE_ALIAS)
    .CreateAlias(this.GetPropertyName<MessageQueue>(x => x.SearchMatches)
                , MATCH_ALIAS, JoinType.LeftOuterJoin);

Dann bekomme ich die Kinder geladen, aber ich erhalte auch doppelte Eltern. Ich verstehe, warum das passiert. Ich verstehe jedoch nicht, wie ich das erste Szenario bekomme, um die SearchMatches automatisch zu laden?

Hier sind meine Berechtigungen:

public class MessageQueue : EntityBase
{
    ...
    public virtual IList<SearchMatch> SearchMatches { get; set; }
    ...
}

public class SearchMatch : EntityBase
{
    ...
    public virtual MessageQueue MessageQueue { get; set; }
    ...
}

Fluent NHibernate ist auf @ gesetDefaultCascade.All(). Ich habe keine anderen Überschreibungen für diese Objekte.

Ich habe versucht, @ zu verwendInverse() undNot.LazyLoad() off der MessageQueue-Überschreibung. Habe auch versucht, EagerLoad von den CreateAlias zu entfernen. Aber ich bekomme immer noch nicht zurück, was ich brauche.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage