nhibernate儿童收集限制

nhibernate儿童收集限制,nhibernate,collections,filter,composite-key,restriction,Nhibernate,Collections,Filter,Composite Key,Restriction,我有以下课程: public class Document { public Document() { Descriptions = new List<Descriptions>(); } public virtual int Id { get; set; } public virtual IList<DocumentDescription> Descriptions { get; set; } } public

我有以下课程:

public class Document
{
    public Document()
    {
        Descriptions = new List<Descriptions>();
    }

    public virtual int Id { get; set; }
    public virtual IList<DocumentDescription> Descriptions { get; set; }
}

public class DocumentDescription
{
    public virtual int DocumentId { get; set; }
    public virtual int LanguageId { get; set; }
}
我的问题是:

var query = Session.QueryOver<Document>().Where(x => x.Id.IsIn(documentIds)).List();
var query=Session.QueryOver().Where(x=>x.Id.IsIn(documentid)).List();

我需要一个查询解决方案来限制几种语言的文档描述,这将在运行时得到。我不想得到一个文档的所有文档描述(只有少数文档)。是否可以为子集合设置筛选/限制?

因此,我了解如何向查询中添加附加的join子句:

DocumentDescription dd = null;
ICriterion criterion = Restrictions.On<DocumentDescription>(x => x.LanguageId).IsIn(languageIds.ToArray());

var query = Session.QueryOver<Document>().Where(x => x.Id.IsIn(documentIds));
query.Left.JoinQueryOver(x => x.Descriptions, () => dd, criterion);
DocumentDescription dd = null;
ICriterion criterion = Restrictions.On<DocumentDescription>(x => x.LanguageId).IsIn(languageIds.ToArray());

var query = Session.QueryOver<Document>().Where(x => x.Id.IsIn(documentIds));
query.Left.JoinQueryOver(x => x.Descriptions, () => dd, criterion);
SELECT * FROM tDocument
LEFT OUTER JOIN tDocumentDescription ON tDocumentDescription.DocumentId = tDocument.Id AND tDocumentDescription.LanguageId IN (@languageIds)
WHERE tDocument.Id IN (@documentIds)