Я только начинаю с NHibernate, и у меня возникают проблемы с выполнением более сложных запросов.
У меня есть объекты со списком прикрепленных тегов. Пользователь предоставит два списка тегов, include и exclude.
Мне нужно найти все объекты, которые имеют все теги включения, и исключить любые объекты, у которых есть какой-либо тег в списке исключений.
Ниже мое первое усилие, которое явно неверно, поскольку в нем перечислены все экранные объекты, имеющие какой-либо из тегов включения, а не все!
Любая помощь очень важна.
var includeTagIds = (from tag in regime.IncludeTags select tag.Id).ToList<int>();
var excludeTagIds = from tag in regime.ExcludeTags select tag.Id;
var displays = session.QueryOver<Display>()
.JoinQueryOver<DisplayTag>(display => display.Tags)
.WhereRestrictionOn(tag => tag.Id)
.IsIn(includeTagIds).List().Distinct();
return displays.ToList();