簡體   English   中英

nHibernate queryover復雜查詢

[英]nHibernate queryover complex query

我整天都在爭吵,似乎無法得到我想要的結果。 我想獲取其標簽集合中具有特定標記的所有節點。

我正在使用這個QueryOver命令,但我得到了所有可能的節點,即使它看起來像我應該只有一個。

    public IEnumerable<Node> GetAllWithTag(int tagId)
    {
        tags = new List<Tag>();
        Node node = null;
        Tag tagQ = null;

        var subQuery = QueryOver.Of<Tag>(() => tagQ)
            .Where(tag1 => tag1.Id == tagId).DetachedCriteria;

        subQuery = subQuery.SetProjection(Projections.Property("Id"));

        var nodes = _applicationUnitOfWork.GetSession().QueryOver<Node>(
            () => node).Where(Subqueries.Exists(subQuery)).List<Node>();

        return nodes;
    }

我正在使用這個奇怪的設置,因為當我嘗試在node.Tags上使用Contains時遇到方法錯誤。 所以我讀了一下,似乎大多數人都有這樣的解決方案。 我只是無法弄清楚我在做什么愚蠢的事情。 非常感謝任何幫助!

您是否嘗試過使用JoinQueryOverJoinAlias

像這樣的東西:

public IEnumerable<Node> GetAllWithTag(int tagId)
{
    return _applicationUnitOfWork.GetSession().QueryOver<Node>()
        .JoinQueryOver<Tag>(n => n.Tags)
            .Where(t => t.Id == tagId)
            .List<Node>();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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