来自父级的QueryOver子集合

时间:2013-04-16 14:05:09

标签: nhibernate queryover

我有这两个对象:

public class Parent
{
    public virtual int Poid { get; set; }
    public virtual IEnumerable<Child> Child { get; set; }
}

public class Child
{
    public virtual int Poid { get; set; }
    public virtual string Name {get; set;}    
}

我想使用NHibernet QueryOver API根据父ID和子ID获取孩子,这意味着给我一个Id = x属于Id = y的父级的孩子。

我试过这样的事情:

return Session.QueryOver<Parent>().Where(p => p.Poid == y)
                .JoinQueryOver(p => p.WishesLists)
                .Where(c => c.Poid == x)
                .SingleOrDefault<Child>();

但是我得到的异常是无法将Child类型的对象转换为Parent。

QueryOver的正确表单如何从父实体开始但返回子实体?

1 个答案:

答案 0 :(得分:1)

我不知道QueryOver是否可以实现这一点,我在它工作了一段时间没有得到任何结果。 LINQ可以使用

var child = session.Query<Parent>()
                   .Where(p => p.Poid == y)
                   .SelectMany(p => p.WishesLists)
                   .SingleOrDefault(c => c.Poid == x);

我更喜欢LINQ语法而不是QueryOver。

另见NH-3176