簡體   English   中英

NHibernate QueryOver用於復雜模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM