2012-08-28 21 views
13
Ben bu sorguyu simüle etmek istiyorum

:QueryOver IN Yan Tümce?

SELECT * FROM FOO WHERE ID IN (1,2,3) 

nasıl FNH yapabilirsiniz?

var ids = new List<int>{1,2,3}; 
var results = session.QueryOver<Foo>().Where(x=> ids.Contains(x.id)); 

Bu işe yaramıyor, sadece bana "tanınmayan bir yöntem çağrısı" istisnası veriyor.

Herhangi bir fikrin var mı? Bu ortak bir istek olmalı.

+0

[NHress with WHERE IN kullanarak NHibernate] olası kopyası (http://stackoverflow.com/questions/5408781/nhibernate-using-queryover-with-where-in) –

cevap

32

Aha- anladım!

var results = session.QueryOver<Foo>().AndRestrictionOn(x=>x.id).IsIn(ids) 

bu son parça ile bizim yaşındaki elle sarılmış ORM hendek hazır olabileceğini: AddRestrictions bir ISIN yöntemi var!

+1

Sadece inanılmaz derecede basit! Teşekkürler! –

+1

[İşte bir Gist] (https://gist.github.com/kenny-evitt/9121755) bunun tarafından oluşturulan SQL'in bir örneğidir. –

+0

'ids.ToArray()'? – ruffin

İlgili konular