0

私の元の質問はここにあります: RavenDB Index Query Question

次のインデックスを使用して、うまく機能するようになりました。

public class JobsQueuedListCurrent : AbstractIndexCreationTask<AppointmentReminder, JobsQueuedListCurrent.IndexResult>
{
    public class IndexResult
    {
        public int Id { get; set; }
        public DateTime AppointmentDateTime { get; set; }
        public ReminderStatus ReminderStatus { get; set; }
        public DateTime JobDateTime { get; set; }
        public JobStatus JobStatus { get; set; }
    }

    public JobsQueuedListCurrent()
    {


        Map = appointmentreminders => from appointmentreminder in appointmentreminders
                                      from job in appointmentreminder.NotificationJobs
                                      where (appointmentreminder.ReminderStatus != ReminderStatus.Confirmed)

                                      select new 
                                      { 
                                          Id = appointmentreminder.Id, 
                                          AppointmentDateTime = appointmentreminder.AppointmentDateTime,
                                          ReminderStatus = appointmentreminder.ReminderStatus,
                                          JobDateTime = appointmentreminder.AppointmentDateTime.AddDays(job.DaysOffset),
                                          JobStatus = job.JobStatus
                                      };

        Store(x => x.AppointmentDateTime, FieldStorage.Yes);
        Store(x => x.ReminderStatus, FieldStorage.Yes);
        Store(x => x.JobDateTime, FieldStorage.Yes);
        Store(x => x.JobStatus, FieldStorage.Yes);

    }
}

コードをローカル マシンから AppHarbor と RavenHQ に移動しました。Appharbor と RavenHQ で通常のデータに接続してクエリを実行できるようになりました。私のコントローラーは次のようになります。

public ActionResult GetJobsQueuedListCurrent()
    {
        var jobsqueuedlist = RavenSession.Query<JobsQueuedListCurrent.IndexResult, JobsQueuedListCurrent>()
            .OrderBy(x => x.AppointmentDateTime)
            .As<AppointmentReminder>()
            .Take(20)
            .ToList();

        return View("List", jobsqueuedlist);

    }

次の where 句を追加すると、うまくいきます。

.Where(x => (x.JobDateTime <= DateTime.Now))

コントローラーは次のようになります。

public ActionResult GetJobsQueuedListCurrent()
    {
        var jobsqueuedlist = RavenSession.Query<JobsQueuedListCurrent.IndexResult, JobsQueuedListCurrent>()
            .Where(x => (x.JobDateTime <= DateTime.Now))
            .OrderBy(x => x.AppointmentDateTime)
            .As<AppointmentReminder>()
            .Take(20)
            .ToList();

        return View("List", jobsqueuedlist);

    }

これにより、エラー (500): 内部サーバー エラーが発生します。出力のペーストビンへのリンクは次のとおりです。

ペーストビン

クエリが Where 句で日時を使用できるようにするにはどうすればよいですか? ところで、クライアントで最新の不安定版 (1.2.2139-Unstable) を使用して RavenHQ と通信しています。ありがとう。

4

1 に答える 1

0

1.2 クライアントを使用して 1.0 サーバーと通信しています。

于 2012-11-11T09:18:14.540 に答える