2009-09-01 21 views
2

Lorsque je configure mon application pour utiliser la génération HiLo Id, un aller-retour par ligne est inséré dans la base de données. Toute la documentation que j'ai lue a indiqué que je devrais voir beaucoup moins de voyages aller-retour.Le générateur NHibernate HiLo ID effectue un aller-retour vers la base de données par ligne insérée

Mes objets sont tous généralement configurés (couramment) en tant que tel:

Id (t => t.Id) .GeneratedBy.HiLo ("MyObject_Identity", "maxid", "1000");

En outre, ma taille de lot est définie sur 75 sur la connexion. Je sais que je fais probablement quelque chose de relativement stupide.

Répondre

0

Voulez-vous dire que vous voyez un aller-retour pour chaque insert pour obtenir une nouvelle valeur élevée pour l'ID? Si oui utilisez-vous une nouvelle instance de SessionFactory sur chaque opération? Le SessionFactory est responsable de la gestion de la récupération de la valeur élevée. En règle générale, vous ne devriez avoir qu'une seule SessionFactory par instance d'application (via un conteneur singleton ou IoC).

+0

Oui. Dans une seule usine de session (en fait une seule session), je voyais un seul aller-retour par instance sauver. J'ai depuis retourné l'application à l'utilisation de l'identité. Je sais que c'est un anti-pattern avec nhibernate, mais ça marche. Plus tard, j'ai remarqué qu'il y avait une propriété de taille de lot au niveau de l'objet. Je suppose que j'ai quelque chose de mal configuré. – JeffreyABecker

+0

J'ai le même problème, il est intéressant de trouver une solution pour cela. – Restuta

+0

Pourquoi avez-vous accepté une réponse, semble-t-il ne pas répondre à notre problème. Dois-je rouvrir le même? – Restuta