【发布时间】:2013-08-08 02:22:26
【问题描述】:
我有一个域对象,我正在尝试使用 QueryOver 来搜索子、子集合的属性,但我不确定如何使用 QueryOver 来解决这个问题。
POCO 如下所示:
public class Case {
public virtual string CaseId { get; set; }
public virtual string CaseNumber { get; set; }
public virtual IList<Request> Requests { get; set; }
}
它有一个请求集合:
public class Request {
public virtual int RequestId { get; set; }
public virtual IList<RequestIndividual> RequestIndividuals { get; set; }
}
其中包含请求个体的集合:
public class RequestIndividual {
public virtual int RequestId { get; set; }
public virtual string IndividualType { get; set; }
public virtual string FirstName { get; set; }
public virtual string MiddleName { get; set; }
public virtual string LastName { get; set; }
public virtual string Company { get; set; }
}
使用 NHibernate 的 QueryOver,我可以加入到我的 Request 集合中,但是我如何进入 RequestIndividual 集合以通过 FirstName 找到一个?
var query = _session.QueryOver<Case>();
if (!string.IsNullOrEmpty(finder.IndividualFirstName))
{
query.JoinAlias(x => x.Requests, () => reuestsAlias, JoinType.LeftOuterJoin)
// This is where I'm stumped. How to query the request for the individuals and find the first name?
}
更新:完整的查询看起来像这样并且可以正常工作,这要感谢 xanatos:
query.JoinAlias(x => x.Requests, () => reuestsAlias, JoinType.LeftOuterJoin)
.JoinAlias(() => reuestsAlias.RequestIndividuals, () => requestIndividiualAlias)
.Where(() => requestIndividiualAlias.FirstName == finder.IndividualFirstName);
【问题讨论】:
标签: c# nhibernate fluent-nhibernate