Domanda

Sto usando NHibernate come lo strato di accesso ai dati per la mia applicazione ASP.NET MVC. Sono anche utilizzando Struttura Map come un contenitore CIO. Ho configurato structre mappa per creare una fabbrica di sessione come Singleton e creare sessioni su una base per richiesta (InstanceScope.Hybrid). Sono in grado di fare operazioni CRUD di base più che bene.

Ora, ho un processo in background in esecuzione ogni 30 secondi, che utilizza alcuni repository (che in sessioni di uso giro). E questo processo in background non è in grado di raccogliere i nuovi dati per qualche motivo. Forse mi manca una cosa semplice. Ho provato googling, ma sono riuscito a trovare qualcosa di utile. Sarebbe davvero aiutarmi, se qualcuno mi ha segnalato nella giusta direzione.

EDIT:

Non sono sicuro se ho la cache di secondo livello attivato, Sono un novizio con NHibernate, il mio file di configurazione hibernate viene incollato al di sotto.

<?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 cosa principale che voglio sapere è, se v'è un modello di progettazione / design che viene già utilizzato in applicazioni web tipiche utilizzando NHibernate. E avrebbero utilizzando sessioni di apolidi risolvere il problema, se le mie impostazioni del database vengono aggiornati da un'altra app?

È stato utile?

Soluzione 3

Ho risolto questo problema creando un'applicazione console separato solo per questo scopo. Non era una soluzione elegante, ma funzionava ancora. Grazie per tutte le vostre risposte.

Altri suggerimenti

Se si ha la cache di secondo livello attivato, ancora un processo in background che sta aggiornando il database senza passare tramite NHibernate, allora non vedere questi cambiamenti che passa. In questo scenario, utilizzando la cache di secondo livello non è appropriato.

Non si utilizza un nuovo sssion ogni tempo (30 secondi) prima di sparare retreive nell'applicazione backgroup?

permettere show_sql in ibernazione config o utilizzare hiberante profiler o SQL Profiler per cercare se l'SQL viene sparato ogni tempo (30 secondi).

è difficile risolvere il problema con la tua descrizione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top