给出如下的简化模型:
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的情况下执行此操作的任何指示?
答案 0 :(得分:0)
NHibernate 2.x中的Linq提供程序非常有限,它通常在实体投影方面存在问题。
您的查询可能适用于NHibernate 3.x中包含的Linq提供程序。
HQL很简单:
select Sender
from Enquiry
where Created < current_timestamp
(您也可以使用DateTime.Now的参数)