J'utilise nHibernate 1.2 et j'ai le problème suivant:
Dans une boucle (disons 100 itérations):
1) si je fais juste une requête (session.CreateQuery(), c'est rapide
2) si je fais juste un ajout (session.Save()), c'est rapide
mais si dans la boucle je fais les 2, nHibernate est très très lent.
C'est vrai avec n'importe quelle base de donnée, mais cela n'arrive pas avec d'autres ORM ni si je fais du code ADO.NET natif.
Il semble qu'utiliser la commande session.Evict() règle le probleme.
Quelqu'un a-t-il une explication ou des conseils à proposer?
Merci d'avance.
Voici un exemple:
Code:
for(int i=0; i<1000; i++)
{
session.CreateQuery("from Test where name=?")
.SetString(0, "robert")
.UniqueResult();
MyObj obj = new MyObj();
session.SaveOrUpdate(obj);
// Ceci rend l'execution rapide, mais pourquoi?
// Et comment s'en passer?
session.Evict(obj);
}