如何检查RavenDB中是否存在table(实体)

How to check if table (entity) exists in RavenDB

我正在使用 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 实体中存在文档时,它 returns 为 false:

if (!_session.Query<TimeoutData>().Any())
{

}

原来我不得不关闭实体名称的复数化,然后 _session.Query<TimeoutData>().Any() 开始工作。在执行该查询之前,尝试查找名为 TimeoutDatas.

的实体

这个 post 帮助了我:RavenDB changes metadata "Raven-Entity-Name"

而且我忘了提到 TimeoutData 是用于存储延迟消息的 NServiceBus 实体。