私の元の質問はここにあります: 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 と通信しています。ありがとう。