我正在使用Raven.Client.Lightweight 2.5库查询RavenDB中的内置TimeoutData实体,以获取特定的超时文档。数据库中可能不存在TimeoutData,因为那里尚未存储任何文档。在这种情况下,当您尝试查询时会抛出NotSupportedException。
目前,我已经针对这种情况创建了解决方法:
try
{
timeoutData = _session.Query<TimeoutData>().FirstOrDefault(t => t.Headers.ContainsValue(someValue));
}
catch (NotSupportedException)
{
return null;
}
是否可以在不使用try-catch的情况下验证TimeoutData是否存在?
我也尝试了以下代码,但当TimeoutData实体中存在文档时,它返回false:
if (!_session.Query<TimeoutData>().Any())
{
}
最佳答案
原来,我不得不关闭实体名称的复数形式,然后_session.Query<TimeoutData>().Any()
开始起作用。在执行该查询之前,尝试查找名为TimeoutDatas
的实体。
这篇文章对我有帮助:RavenDB changes metadata "Raven-Entity-Name"。
而且我也忘了提到TimeoutData
是用于存储延迟消息的NServiceBus实体。