当我将下面的索引添加到我的raven数据库时,会出现一个简单的查询,例如
return Session.Query<R>().FirstOrDefault(x => x.RId == Id);
始终返回null。只有在强制Raven删除我的自定义索引后才会返回所需的功能。这是为什么?
有副作用的指数:
public class RByLatestCommentIndex : AbstractIndexCreationTask<R>
{
public RByLatestCommentIndex()
{
SetMap();
}
void SetMap()
{
Map = r => r.Select(x => new
{
Id = x.Id,
TimeStamp = x.Comments.Count() > 0 ? x.Comments.Max(u => u.Created)
: x.Created
}).OrderByDescending(y => y.TimeStamp).Select(r => new { Id = r.Id });
}
}
public class RIdTransformer : AbstractTransformerCreationTask<R>
{
public RIdTransformer()
{
TransformResults = ids => ids.Select(x => LoadDocument<R>(x.Id));
}
}
编辑:
回复Ayende Rahien's评论:
在DB中有一个查询,否则将使用(Auto / R / ByRID),但使用的索引看起来像这样,令人费解:
from doc in docs.Rs select new { Images_Count__ = doc.Images["Count()"], RId = doc.RId }
这种行为有什么解释?而且,我是否必须添加一个静态索引才能通过RId查询R?