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; }
}

問い合わせがいくつかの基準を満たしている場合に、送信者とその問い合わせのリストを返すように、LinqtoNhibernateクエリをどのように構築できますか。私はこのようなことを試しました:

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

この場合、タイプSenderをタイプEnquiryにキャストできないというInvalidCastExceptionが発生します。

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 に答える