Question

J'utilise NHibernate comme la couche d'accès aux données pour mon application ASP.NET MVC. J'utilise aussi la carte de la structure comme un conteneur IoC. J'ai configuré la carte structre pour créer une usine de session en tant que singleton et créer des sessions sur une base par demande (InstanceScope.Hybrid). Je suis en mesure de faire des opérations CRUD de base très bien.

Maintenant, j'ai un processus d'arrière-plan toutes les 30 secondes, qui utilise quelques dépôts (qui utilisent les sessions de tour). Et ce processus d'arrière-plan ne parvient pas à ramasser les nouvelles données pour une raison quelconque. Peut-être que je manque une chose simple. J'ai essayé googler mais a été incapable de trouver quoi que ce soit utile. Ce serait vraiment me aider si quelqu'un m'a orienté dans la bonne direction.

EDIT:

Je ne sais pas si je le cache de second niveau a permis, je suis un débutant avec NHibernate, Mon fichier de configuration de mise en veille prolongée est collée ci-dessous.

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  <session-factory>
    <property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
    <property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
    <property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
    <property name="connection.connection_string">Data Source=.\SQLEXPRESS;Initial Catalog=Map.db;Integrated Security=True</property>
    <property name="show_sql">true</property>
    <mapping assembly="Infrastructure"/>
  </session-factory>
</hibernate-configuration>

La principale chose que je veux savoir est, s'il y a un modèle de conception / design qui est déjà utilisé dans des applications Web en utilisant NHibernate typiques. Et serait à l'aide de sessions sans état résoudre le problème, si mes paramètres de base de données sont mis à jour à partir d'une autre application?

Était-ce utile?

La solution 3

Je l'ai résolu ce problème en créant une application console séparée juste à cet effet. Était pas une solution élégante, mais il fonctionnait toujours. Merci pour toutes vos réponses.

Autres conseils

Si vous avez le cache de second niveau activé, mais un processus d'arrière-plan qui est mise à jour la base de données sans passer par NHibernate, alors vous ne verrez pas ces changements à venir à travers. Dans ce scénario, en utilisant le cache de second niveau ne convient pas.

Utilisez-vous un nouveau visssits chaque fois (30 secondes) avant le feu retreive dans votre application backgroup?

activer show_sql dans la configuration de mise en veille prolongée ou utilisez hiberante profileur ou sql profileur pour rechercher si le sql est tiré à chaque fois (30 secondes).

il est difficile de résoudre votre problème avec votre description.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top