2013-08-20 122 views
0

上ravenhq.com对RavenDb查询时,我得到以下日志消息:问题上查询索引

Issuing query on index Temp/Users/ByName for: Name:raz0rf1sh 

下面是方法,我想执行的代码:

public User GetByName(string name) 
{ 
    using (var session = _documentStore.OpenSession()) 
    { 
     var user = session.Query<User>() 
      .SingleOrDefault(x => x.Name == name); 

     if (user == null) 
      throw new ArgumentException("Oh snap! User does not exist."); 

     return user; 
    } 
} 

我可以看到索引,甚至当我从乌鸦GUI中查询时,没有返回结果。

回答

1

代码看起来不错,日志消息只是信息性的 - 不是错误。是否有一个User文档,Name调用raz0rf1sh实际存储在数据库中?

如果是这样,那么你可能正在处理陈旧的索引问题。要么是文档只是写入,并没有时间进行索引,或者这是第一次调用此查询,因此它正在为您建立一个动态索引。

您应该检讨the documentation on stale indexes

如果这是一个单元测试,你可能想简单地查询更改为:

var user = session.Query<User>() 
     .Customize(x => x.WaitForNonStaleResults()) 
     .SingleOrDefault(x => x.Name == name); 

如果这是生产代码,那么你可能要考虑创建此查询static index

+0

这就是诀窍!谢谢! – mattruma