私のクラスの簡単な例:
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
実際、そのタグの1つがInterestedTagsに含まれている場合は、投稿を表示する必要があります。
UPD
私のために働く:
Session.QueryOver<Post>()
.JoinAlias(p => p.Tags, () => tag)
.WhereRestrictionOn(() => tag.Id)
.IsIn(criterion.InterestedTags.Select(x => x.Id).ToArray())
.List<Post>();