【问题标题】:NHibernate QueryOver For Complex Model复杂模型的 NHibernate QueryOver
【发布时间】: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


    【解决方案1】:

    从这里

    query.JoinAlias(x => x.Requests, () => reuestsAlias, JoinType.LeftOuterJoin)
    

    你这样做:

    RequestIndividual requestIndividualAlias;
    
    query.JoinAlias(() => reuestsAlias.RequestIndividuals, () => requestIndividualAlias);
    

    有一整套QueryOver 方法不是x =&gt; x.,而是() =&gt; alias.。我通常总是更喜欢使用它们(并使用JoinAlias 而不是JoinQueryOver),因为它是明确的(JoinQueryOver 你必须想...x =&gt; x.,但x 是什么?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2011-09-30
      • 2011-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多