【发布时间】:2013-12-06 05:49:43
【问题描述】:
我正在使用 Ravendb 2.5。我有一种情况,我需要先等待非陈旧索引,如果它在 15 秒后超时,则查询陈旧索引而不是抛出超时异常。这是我的代码。
RavenQueryStatistics stats;
var result = queryable.Statistics(out stats).Take(maxPageSize).ToList();
if (stats.IsStale)
{
try
{
return queryable.Customize(x => x.WaitForNonStaleResultsAsOfLastWrite(TimeSpan.FromSeconds(15))).ToList();
}
catch (Exception)
{
return result;
}
}
else
{
return result;
}
我需要添加扩展方法以使上述代码适用于所有查询,例如: public static List ToList(this IRavenQueryable queryable)
我可能还需要添加扩展方法来覆盖:.All()、.Any()、.Contains()、.Count()、.ToList()、.ToArray()、.ToDictionary()、.First ()、.FirstOrDefault()、.Single()、.SingleOrDefault()、.Last()、.LastOrDefault() 等
我想知道是否还有其他更好的解决方案。最佳做法是什么?
ravendb 是否有一个 AOP 切点,当超时异常抛出时,我们可以做一些事情来改变查询的稳定索引并返回陈旧的结果?
【问题讨论】: