2016-05-13 14 views
6

Sto interrogando l'entità TimeoutData incorporata in RavenDB utilizzando la libreria Raven.Client.Lightweight 2.5 per ottenere un documento di timeout specifico. È possibile che TimeoutData non esista nel database perché non è ancora presente alcun documento. In tal caso, viene generata NotSupportedException quando si tenta di eseguire una query.Come verificare se esiste una tabella (entità) in RavenDB

Attualmente ho creato soluzione per questa situazione:

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

E 'possibile verificare se esiste TimeoutData senza usare try-catch? Ho anche provato il seguente codice ma restituisce false quando i documenti esistono in TimeoutData entità:

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

} 
+0

Non sono sicuro di seguirmi. 'NotSupportedException' verrà lanciato solo se non siamo in grado di elaborare la query. Sei interessato a un documento specificato o in qualsiasi cosa esista? –

+0

Mi interessa sapere se l'entità TimeoutData (tabella) esiste in RavenDB. Anche NotSupportedException viene generato quando TimeoutData non esiste, ma vorrei implementare una soluzione più solida. –

+0

'if (! _session.Query () .Any())' Questo dovrebbe darti quell'informazione –

risposta

4

Risulta che ho dovuto spegnere pluralizzazione dei nomi di entità e dopo che _session.Query<TimeoutData>().Any() hanno iniziato a lavorare. Prima di eseguire questa query, cercava di trovare l'entità denominata TimeoutDatas.

Questo post mi ha aiutato: RavenDB changes metadata "Raven-Entity-Name".

E inoltre ho dimenticato di menzionare che TimeoutData è un'entità NServiceBus per la memorizzazione di messaggi posticipati.

Problemi correlati