0

给定一个简化模型,如下所示:

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 to Nhibernate 查询,以便它返回一个发件人列表及其查询满足某些条件的查询。我尝试过这样的事情:

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

在这种情况下,我收到一个 InvalidCastException,说您不能将类型 Sender 转换为类型 Enquiry。

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

4

1 回答 1

0

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

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

HQL 很简单:

select Sender
from Enquiry
where Created < current_timestamp

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

于 2010-04-28T10:57:38.223 回答