2016-05-13 23 views
6

içinde tablo (varlık) olup olmadığını kontrol etme Belirli bir zaman aşımı belgesi almak için Raven.Client.Lightweight 2.5 kütüphanesini kullanarak RavenDB'de yerleşik TimeoutData varlığını sorgularım. TimeoutData'nın veritabanında bulunmaması mümkündür, çünkü henüz orada belge kaydedilmez. Sorgulamaya çalıştığınızda bu durumda NotSupportedException atılır. RavenDB

Şu anda bu durum için geçici çözüm yarattık:

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

o TimeoutData try-catch kullanmadan varsa doğrulamak mümkün mü? Ayrıca aşağıdaki kodu denedim ama belgeler TimeoutData varlıktaki bulunduğunda yanlış döndürür:

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

} 
+0

Takip ettiğimden emin değilim. “NotSupportedException” yalnızca sorguyu gerçekten işleyemezsek atılır. Belirtilen bir dokümanda veya var olan herhangi bir şeyle ilgileniyor musunuz? –

+0

TimeoutData öğesinin (tablo) RavenDB'de bulunup bulunmadığıyla ilgileniyorum. TimeoutData yoksa NotSupportedException da atılır, ancak daha sağlam bir çözüm uygulamak istiyorum. –

+0

'if (! _session.Query () .Any())' Bu bilgi size –

cevap

4

ben varlık adlarını pluralization kapatmak zorunda kaldı ve bu _session.Query<TimeoutData>().Any() başladıktan sonra çalışmaya çıkıyor. Bu sorguyu yapmadan önce TimeoutDatas adlı varlık bulmaya çalıştı.

Bu gönderi bana yardımcı oldu: RavenDB changes metadata "Raven-Entity-Name".

Ayrıca, ertelenmiş iletileri depolamak için TimeoutData'un NServiceBus öğesinden söz ettiğinden bahsetmeyi unuttum.

İlgili konular