2009-06-29 4 views
0

Ich verwende NHibernate als Datenzugriffsschicht für meine ASP.NET MVC-Anwendung. Ich verwende auch Strukturkarte als IoC-Container. Ich habe Structre map konfiguriert, um eine Sitzungsfactory als Singleton zu erstellen und Sitzungen pro Anfrage (InstanceScope.Hybrid) zu erstellen. Ich kann grundlegende CRUD-Operationen problemlos durchführen.NHibernate kann keine neuen Daten aus der Datenbank übernehmen

Jetzt habe ich einen Hintergrundprozess alle 30 Sekunden ausgeführt, die ein paar Repositories verwendet (die wiederum Sitzungen verwenden). Und dieser Hintergrundprozess kann die neuen Daten aus irgendeinem Grund nicht aufnehmen. Vielleicht vermisse ich eine einfache Sache. Ich habe versucht zu googeln, konnte aber nichts Nützliches finden. Es würde mir wirklich helfen, wenn mich jemand in die richtige Richtung weist.

EDIT:

Ich bin nicht sicher, ob ich die zweite Level-Cache aktiviert bin, ich bin ein Neuling mit NHibernate, Meine Hibernate-Konfigurationsdatei unter eingefügt.

<?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> 

Die Hauptsache ich wissen will, ist, wenn es ein Design/Design-Muster ist, das bereits in typischen Web-Anwendungen mit NHibernate verwendet wird. Und würde die Verwendung zustandsloser Sitzungen das Problem lösen, wenn meine Datenbankeinstellungen von einer anderen App aktualisiert werden?

Antwort

0

Ich löste dieses Problem, indem ich eine separate Konsolenanwendung nur für diesen Zweck erstellte. War keine elegante Lösung, aber es funktionierte immer noch. Danke für all deine Antworten.

1

Wenn Sie den Cache der zweiten Ebene aktiviert haben, aber einen Hintergrundprozess haben, der die Datenbank aktualisiert, ohne über NHibernate zu gehen, werden diese Änderungen nicht angezeigt. In diesem Szenario ist die Verwendung des Cache der zweiten Ebene nicht geeignet.

0

Verwenden Sie jedes Mal (30 Sekunden) eine neue Sitzung, bevor Sie in Ihrer Rückgruppierungsanwendung feuern?

Aktivieren Sie show_sql in Hibernate-Konfiguration oder verwenden Sie hiberante Profiler oder Sql Profiler, um zu sehen, ob die SQL jedes Mal ausgelöst wird (30 Sekunden).

es ist schwer, Ihr Problem mit Ihrer Beschreibung zu lösen.

Verwandte Themen