webForumDet fria alternativet

Where-klausul i Nhibernate?

.NET

4 svar · 580 visningar · startad av Lukaspojken

Medlem sedan maj 20011 312 inlägg
Frågan#1

Hur gör man en where-klausul i Nhibernate? Tex man ska hämta upp alla bokningar mellan ett visst datumintervall. Hur skulle man göra det på bäst sätt?

Medlem sedan mars 20007 896 inlägg
#2
IList list = session.CreateQuery(typeof(YourObject)).Add(Expression.Between("dateField", date1, date2)).List();
Medlem sedan aug. 20003 575 inlägg
#3

SPiN skrev:

IList list = session.CreateQuery(typeof(YourObject)).Add(Expression.Between("dateField", date1, date2)).List();

Tror du menade fel här SPin det sättet du gör det på är Criterions.. dvs byt ut

session.CreateQuery till session.CreateCriteria.
Fungerar även med genercis

CreateCriteria<Person>();

Sedan har man alternativet Query också eller Linq

Medlem sedan maj 20011 312 inlägg
#4

Ok, då är det så som jag misstänkte. Det jag skulle vilja komma ifrån är hårdkodningen av datakolumnen. Det finns inget annat sätt?

Medlem sedan aug. 20003 575 inlägg
#5

Lukaspojken skrev:

Ok, då är det så som jag misstänkte. Det jag skulle vilja komma ifrån är hårdkodningen av datakolumnen. Det finns inget annat sätt?

Criterion

var persons = session.CreateCriteria<Person>()
                   .Add(Expression.Between("PropertyName", date1, date2).List<Person>();

Linq

var persons = (from person in session.Linq<Person>
                    where person.PropertyName >= date1 && person.PropertyName <= date2
                    select Person).ToList();
264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)