Linq to NHibernate - 如何返回仅包含某些子对象的父对象

时间:2010-04-28 03:12:19

标签: nhibernate linq-to-nhibernate

给出如下的简化模型:

public class Enquiry
{
    public virtual DateTime Created { get; set; }
    public virtual Sender Sender { get; set; }
}

public class Sender
{
    public virtual IList<Enquiry> Enquiries { get; set; }
}

如何构建Linq到Nhibernate查询,以便它返回一个发送者列表及其查询符合某些条件的查询。我尝试过这样的事情:

return session.Linq<Enquiry>()
   .Where(enquiry => enquiry.Created < DateTime.Now)
   .Select(enquiry => enquiry.Sender)

在这种情况下,我得到一个InvalidCastException,说你不能将类型Sender强制转换为类型。

关于如何在不使用HQL的情况下执行此操作的任何指示?

1 个答案:

答案 0 :(得分:0)

NHibernate 2.x中的Linq提供程序非常有限,它通常在实体投影方面存在问题。

您的查询可能适用于NHibernate 3.x中包含的Linq提供程序。

HQL很简单:

select Sender
from Enquiry
where Created < current_timestamp

(您也可以使用DateTime.Now的参数)