NHibernate,QueryOver 返回列表 属性

NHibernate, QueryOver returning list with list property

我有class喜欢:

public class A : BaseTableFields
{
    public virtual string Name { get; set; }
    public virtual IList<B> propB { get; set; }
}

public class B : BaseTableFields
{
    public virtual A propA { get; set; }
    public virtual IList<C> propC { get; set; }
}

public class C : BaseTableFields
{
    public virtual B propB { get; set; }
    public virtual IList<D> propD { get; set; }
}

所以我的每个 class 都与下面的 class 有一对多的关系。 如何编写最有效的查询,我收到包含 listOfA.propB 中记录的 A 类型列表 (List listOfA) 以及 listOfA.propB 中包含 listOfA.propB.propC 中的所有引用记录和等等。

请帮忙。

让我们首先假设:

var list = Session.QueryOver<A>().Where(x=>x.Name == "test").List().ToList();

returns 我列出了 3 个类型 A 的元素,但它的 属性 propB 是空的。

我建议使用 NHibernate LINQ 提供程序中的 'Fetch' 或 'FetchMany' 函数。 this article 中的示例说明了它的实际作用,它显示了它将生成的 SQL。

处理你的例子会产生这样的结果:

var list = Session.QueryOver<A>()
                  .Where(x => x.Name == "test")
                  .FetchMany(x => x.propB)
                  .ThenFetchMany(x => x.propC)
                  .ToList();

如果这仍然给您带来问题,那么实体的一对多关系之间的映射文件可能有问题。