2016-05-13 14 views
6

Ich frage integrierte TimeoutData Entität in RavenDB mit Raven.Client.Lightweight 2.5 Bibliothek, um bestimmte Timeout-Dokument zu erhalten. Es ist möglich, dass TimeoutData nicht in der Datenbank vorhanden ist, da dort noch kein Dokument gespeichert ist. In diesem Fall wird NotSupportedException ausgelöst, wenn Sie versuchen, sie abzufragen.Wie überprüft man, ob Tabelle (Entität) in RavenDB existiert

Zur Zeit habe ich Abhilfe für diese Situation geschaffen:

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

Ist es möglich, zu überprüfen, ob TimeoutData existieren, ohne try-catch zu verwenden? Ich habe auch den folgenden Code versucht, aber es gibt false zurück, wenn Dokumente existieren in TimeoutData Einheit:

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

} 
+0

Ich bin mir nicht sicher, ob ich folge. 'NotSupportedException' wird nur ausgelöst, wenn wir die Abfrage nicht wirklich bearbeiten können. Interessieren Sie sich für ein bestimmtes Dokument oder was auch immer dort vorhanden ist? –

+0

Ich bin interessiert, ob TimeoutData Entität (Tabelle) in RavenDB überhaupt existiert. NotSupportedException wird auch ausgelöst, wenn TimeoutData nicht existiert, aber ich möchte eine festere Lösung implementieren. –

+0

'if (! _session.Query () .Any())' Dies sollte Ihnen die Information geben –

Antwort

4

Es stellte sich heraus, dass ich Pluralisierung Entitätsnamen auszuschalten und danach _session.Query<TimeoutData>().Any() zu arbeiten begann. Vor dieser Abfrage wurde versucht, die Entität TimeoutDatas zu finden.

Dieser Beitrag hat mir geholfen: RavenDB changes metadata "Raven-Entity-Name".

Und auch ich habe vergessen zu erwähnen, dass TimeoutData NServiceBus Einheit zum Speichern von zurückgestellten Nachrichten ist.

Verwandte Themen