我有这两个对象:
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的正确表单如何从父实体开始但返回子实体?
答案 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