我正在使用RavenDB实现完整日历。
我做一个简单的,像往常一样匿名返回模型。
public JsonResult GetHolidays()
{
return Json(Session.Query<Models.Holiday>().Select(d => new
{
id = d.Id,
title = d.Name,
start = d.DateStart,
end = d.DateEnd,
allDay = true
}), JsonRequestBehavior.AllowGet);
}
我将allDay
设置为true
,但结果为false
。 (我将我的broswer指向控制器/ Home / GetHolidays,这是结果字符串,我之前已多次这样做以确保JSON正确)
[{"id":"holidays/97","title":"Piotr Test 2 - 1","start":"\/Date(1405284740420)\/","end":"\/Date(1405543940420)\/","allDay":false},{"id":"holidays/98","title":"Piotr Test 10 - 26","start":"\/Date(1404593542266)\/","end":"\/Date(1407703942266)\/","allDay":false},{"id":"holidays/99","title":"Piotr Test 3 - 0","start":"\/Date(1405198343713)\/","end":"\/Date(1405457543713)\/","allDay":false}]
我这么做了很多次。为什么结果会以false
的形式返回?
即使我将其设为false
,它也会保留false
。我清除了缓存并重新启动了很多。不知道为什么会这样。谁知道我做错了什么?
答案 0 :(得分:3)
RavenDB没有提供从索引中选择用户提供的值的方法。 您的查询尝试在查询期间执行(简单但仍然)计算,并且RavenDB不支持该计算。 您可以在查询从RavenDB返回后添加该属性。
答案 1 :(得分:1)
不完全确定这会如何影响匿名类型,但是必须在查询到RavenDB会话后使用.ToList()
。
它就像从DB模型中发起/继承的匿名类型......?不知道如何解释这种行为。
public JsonResult GetHolidays()
{
return Json(Session.Query<Models.Holiday>()**.ToList()**.Select(d => new
{
id = d.Id,
title = d.Name,
start = d.DateStart,
end = d.DateEnd,
allDay = true
}), JsonRequestBehavior.AllowGet);
}