【发布时间】:2016-05-13 06:06:37
【问题描述】:
我正在使用 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())
{
}
【问题讨论】:
-
我不确定我是否跟随。
NotSupportedException只有在我们无法实际处理查询时才会被抛出。您是否对指定的文档感兴趣,或者对其中存在的任何内容感兴趣? -
我对 RavenDB 中是否存在 TimeoutData 实体(表)感兴趣。当 TimeoutData 不存在时也会抛出 NotSupportedException,但我想实现更可靠的解决方案。
-
if (!_session.Query<TimeoutData>().Any())这应该会给你这个信息 -
原来我必须关闭实体名称的复数,然后
_session.Query<TimeoutData>().Any()开始工作。这篇文章帮助了我:stackoverflow.com/questions/3635954/…。 TimeoutData 也是 NServiceBus 实体,用于存储延迟消息。
标签: c# .net ravendb nservicebus