[英]NHibernate QueryOver For Complex Model
我有一个域对象,我正在尝试使用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);
从这里
query.JoinAlias(x => x.Requests, () => reuestsAlias, JoinType.LeftOuterJoin)
你做这个:
RequestIndividual requestIndividualAlias;
query.JoinAlias(() => reuestsAlias.RequestIndividuals, () => requestIndividualAlias);
有一个完整的QueryOver
方法“集合”,而不是x => x.
是() => alias.
。 我通常总是喜欢使用它们(并使用JoinAlias
而不是JoinQueryOver
),因为它明确表明了您的意思(对于JoinQueryOver
您必须考虑... x => x.
,但是x
是什么?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.