En essayant de renvoyer une liste SimpleQuery qui interroge une seule table et utilise IN. Je peux obtenir ce travail en utilisantNhibernate HQL where requête IN
return new List<Jobs>(
ActiveRecordMediator<Jobs>.FindAll(Expression.In("ServiceId", ids))
);
Cependant cela est vraiment vraiment vraiment lent. Donc, je voudrais faire quelque chose comme ça
SimpleQuery<Job> query =
new SimpleQuery<Job>(@"from Job as j where ? in (j.ServiceId)", ids);
return new List<Job>(query.Execute());
Cependant je ne peux pas faire fonctionner SimpleQuery. Je ne peux pas trouver de documentation couvrant cela et j'espérais que quelqu'un là-bas serait en mesure d'aider.
Merci
Merci pour la réponse. Je modifié ma requête en fonction de votre réponse SimpleQuery requête = new SimpleQuery ( @ "de Job que j où j.SecondName = (: nom) et dans ServiceId (: serviceIds)"); query.SetParameter ("serviceIds", ids); query.SetParameter ("nom", nom); return new Liste (query.Execute()); Le seul problème est maintenant le tableau int d'ids que je passe. Le champ dans la base de données est de type int, si j'utilise IN sur l'un des champs de chaîne il fonctionne bien et si je passe une valeur int simple ça marche . Comment puis-je passer un tableau? Merci –
Gilbert
Opps, mauvais appel de méthode Essayez d'utiliser q.SetParameterList à la place – Noel
Aussi cela peut vous être utile aussi http://www.nhforge.org/doc/nh/en/index.html#manipulatingdata-queryinterface – Noel