Критерии NHibernate с различной нагрузкой на родителей Все дети?
У меня есть родительские дочерние отношения, где я хочу вернуть только одного родителя и загрузить всех детей. Я использую критерии, потому что это динамический запрос.
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>();
Это возвращает родителя (MessageQueue), но не его детей (SearchMatches).
Когда я пытаюсь сделать это:
var query = _sessionManager.Session
.CreateCriteria<MessageQueue>(QUEUE_ALIAS)
.CreateAlias(this.GetPropertyName<MessageQueue>(x => x.SearchMatches)
, MATCH_ALIAS, JoinType.LeftOuterJoin);
Тогда я загружаю детей, но также я получаю дублирующих родителей. Я понимаю, почему это происходит. Однако я не понимаю, как получить первый сценарий для автоматической загрузки SearchMatches?
Вот мои права:
public class MessageQueue : EntityBase
{
...
public virtual IList<SearchMatch> SearchMatches { get; set; }
...
}
public class SearchMatch : EntityBase
{
...
public virtual MessageQueue MessageQueue { get; set; }
...
}
Свободный NHibernate установлен наDefaultCascade.All()
, У меня нет других переопределений для этих объектов.
Я пытался использоватьInverse()
а такжеNot.LazyLoad()
от переопределения MessageQueue. Также пытался EagerLoad от CreateAlias. Но я все еще не получаю то, что мне нужно.