2012-06-12 13 views
9

linq to NHibernate. Request tablo hiçbir satır varVeritabanındaki veriler için NHibernate için Max içinde

var q = SessionInstance.Query<Request>().Max(e => e.Code); 

, bu sorgu yürütme GenericADOException bu mesajla yükseltir:

{"Could not execute query[SQL: SQL not available]"}

{"Value cannot be null.\r\nParameter name: item"}

ne yapmalıyım?

cevap

11

bu

SessionInstance.Query<Request>().Max(x => (int?)x.Code); 
+0

Oyuncular neden bu işi yapıyor? 'X.Code' int'den başka bir şey miydi? (Sadece öğrenmek istiyorum, kendi cevabımı tanıtmak istemiyorum). –

+0

@GertArnold Bilmiyorum, sadece çalışıyor :) Ama sanırım Nhibernate linq sağlayıcısıyla ilgili bir şey. –

+1

Tamam, cevabınız için teşekkürler. Belki birisi buna ışık tutabilir. –

1

Bu Linq NHibernate ile çalışması gerektiğini düşünüyorum deneyin:

var q = SessionInstance.Query<Request>().Select(e => e.Code) 
    .DefaultIfEmpty().Max(); 

ya da belki DefaultIfEmpty(<some value>).

+0

Performans için veritabanında birçok kayıt için çözümünüz uygun değil. – Ehsan

+0

Neden değil? DefaultIfEmpty daha fazla kayıt almaz, sadece dizisi boşsa bir değer ekler. –

+3

NHibernate linq sağlayıcısı için DefaultIfEmpty uygulanmadı ve NHibernate 3.3.1.4000 sürüm –

İlgili konular