2016-05-13 13 views
6

Pytam wbudowaną jednostkę TimeoutData w RavenDB przy użyciu biblioteki Raven.Client.Lightweight 2.5, aby uzyskać określony dokument dotyczący limitu czasu. Możliwe, że TimeoutData nie istnieje w bazie danych, ponieważ nie ma tam jeszcze żadnego dokumentu. W takim przypadku zgłoszony zostanie wyjątek NotSupportedException podczas próby wysłania zapytania.Jak sprawdzić, czy tabela (podmiot) istnieje w RavenDB

Obecnie stworzyliśmy obejście tej sytuacji:

try 
{ 
    timeoutData = _session.Query<TimeoutData>().FirstOrDefault(t => t.Headers.ContainsValue(someValue)); 
} 
catch (NotSupportedException) 
{ 
    return null; 
} 

Czy to możliwe, aby sprawdzić, czy TimeoutData istnieć bez użycia try-catch? Próbowałem również następujący kod ale zwraca false gdy dokumenty istnieją w jednostce TimeoutData:

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

} 
+0

Nie jestem pewien, czy podążam. Wyjątek "NotSupportedException" zostanie zgłoszony, jeśli nie będziemy w stanie przetworzyć zapytania. Czy jesteś zainteresowany określonym dokumentem lub cokolwiek tam istnieje? –

+0

Jestem zainteresowany tym, czy encja TimeoutData (tabela) istnieje w ogóle w RavenDB. NotSupportedException jest również generowany, gdy TimeoutData nie istnieje, ale chciałbym wprowadzić bardziej trwałe rozwiązanie. –

+0

'if (! _session.Query (). Any())' To powinno ci dać tę informację –

Odpowiedz

4

Okazuje się, że musiałem wyłączyć pluralization nazw jednostki i potem _session.Query<TimeoutData>().Any() zaczął działać. Przed wykonaniem tego zapytania próbowano znaleźć obiekt o nazwie TimeoutDatas.

Ten post pomógł mi: RavenDB changes metadata "Raven-Entity-Name".

A także zapomniałem wspomnieć, że TimeoutData jest jednostką NServiceBus do przechowywania odroczonych wiadomości.

Powiązane problemy