1

以下を QueryOver に変換する方法に関するヒント:

 var widget = session.Query<Widget>()
                    .Fetch(x => x.NotificationJobs)
                    .Where(x =>
                        x.Status == Status.Active &&
                        !x.NotificationJobs.Any())
                    .OrderByDescending(x => x.DateCreated)
                    .Take(1)
                    .SingleOrDefault();

通知ジョブのないウィジェットを取得したい。

4

1 に答える 1

0
var widgetWithNoNotificationJob = session.QueryOver<Widget>()
    .Where( x => x.Status == Status.Active )
    .OrderBy( x => x.DateCreated ).Desc
    .Left.JoinQueryOver<NotificationJob>( x => x.NotificationJobs )
        .Where( x => x.NotificationJobId == null )
    .Take( 1 )
    .SingleOrDefault();

これにより、NotificationJob テーブルの LEFT OUTER JOIN と NotificationJob.NotificationJobId IS NULL を含む WHERE 句を含む SQL が生成されます。

うまくいけば、これはあなたを正しい方向に向けるでしょう。

于 2012-08-03T07:38:45.297 に答える