Простой пример моего класса:
public class Post
{
public IEnumerable<Tag> Tags { get; set; }
}
Пользователь проверяет несколько заинтересованных тегов для фильтрации списка сообщений.
Мне нужно отфильтровать все сообщения по выбранным тегам, например:
Session.QueryOver<Post>()
.WhereRestrictionOn(x => x.Tags)
.IsIn(criterion.InterestedTags.ToList())
.List<Post>();
Исключение: NHibernate.QueryException: Cannot use collections with InExpression
На самом деле, я должен показать пост, если один из его тегов содержится в InterestTags.
UPD
Работает на меня:
Session.QueryOver<Post>()
.JoinAlias(p => p.Tags, () => tag)
.WhereRestrictionOn(() => tag.Id)
.IsIn(criterion.InterestedTags.Select(x => x.Id).ToArray())
.List<Post>();