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)