2010-02-17 6 views
1

J'essaie de mettre à jour plusieurs enregistrements avec une base de données via NHibernate.NHibernate - Comment mettre à jour l'ordre de tri

La requête SQL directe ressemble:

enregistrements de mise à jour = mis sortOrder sortOrder +1 où sortOrder> = 3 et sortOrder < = 100

Est-ce possible dans NHibernate? Je ne veux pas prendre l'approche de tirer chaque enregistrement et les mettre à jour un à la fois puisque cette méthode peut être utilisée sur des bases de données avec plusieurs milliers d'enregistrements.

Répondre

2

Il semble que vous vouliez simplement envoyer une commande à la base de données pour effectuer la mise à jour. Si c'est le cas, vous pouvez utiliser la méthode CreateSQLQuery sur l'objet session pour le faire. More info here.

Si vous tentez de conserver plusieurs objets à la fois, vous devez effectuer une mise à jour par lots. More info on this from here.

+0

La plate-forme CreateSQLQuery est-elle indépendante? J'ai pensé que je lisais où Critères> HQL> SQL en ce qui concerne l'indépendance de la plate-forme, mais je peux me tromper. –

+0

CreateSQLQuery n'est pas indépendant de la plate-forme. Vous pouvez effectuer des appels que, en théorie, différents DB ne peuvent pas prendre en charge. – LordHits

+0

Existe-t-il un moyen d'effectuer la même mise à jour via HQL? –

Questions connexes