Question

Cela a été un problème qui existe sur 3 projets pour moi.

J'ai essayé ce qui suit:

<property name="connection.isolation">ReadCommitted</property>

Situé dans hibernate.cfg.xml

Utilisation nhiberate couramment:

MsSqlConfiguration.MsSql2008.IsolationLevel(IsolationLevel.ReadCommitted);

Situé dans Global.asax.cs

J'ai toujours été obligé de le définir comme ceci:

CurrentNhibernateSession.Transaction.Begin(IsolationLevel.ReadCommitted);

qui fonctionne. (Je peux voir cela en utilisant NHibernate Profiler)

Le problème est maintenant je suis en utilisant l'architecture forte et transaction.begin est appelé dans ce cadre et je ne parviens pas à le reconstruire.

Est-il possible de le faire qui fonctionne sans le configurer explicitement lorsque vous commencez une transaction?

Était-ce utile?

La solution

Êtes-vous certain que ce soit le cas? Si vous êtes seulement de vérifier le niveau d'isolation par ce NHProf vous dit; Cela pourrait être un problème. Rappelez-vous que NHProf rapporte seulement ce que l'infrastructure de l'exploitation forestière dans NHibernate nourrit. Peut-être que le message de niveau d'isolation n'est pas envoyé lorsque vous ouvrez une transaction avec la valeur par défaut? Cela pourrait probablement être vérifié en examinant la source NHibernate.

Je suggère d'utiliser un autre moyen pour vérifier le niveau de transaction (peut-être SQL Profiler?) Avant de conclure que cela ne fonctionne pas comme prévu.

Modifier

J'ai eu un coup d'œil à la source NHibernate et peut vérifier mon intuition ci-dessus. Si vous avez un oeil à la page

Autres conseils

On dirait que votre paramètre de propriété doivent être appelés hibernate.connection.isolation ...

<add key="hibernate.connection.isolation" value="ReadCommitted" />

Cordialement

Jon

scroll top