Puede ser que la parte  session = _sessionFactory[database].OpenSession();

este cogiendo siempre la misma session, ya que la base de datos es siempre
la misma.

public static class NHibernateSession
    {
        public const string BBDD_OFITOUR = "OfiTour";
        public const string BBDD_OFICONTA = "OfiConta";

        static readonly IDictionary<string, ISessionFactory> _sessionFactory
= new Dictionary<string, ISessionFactory>();

        // Lo convierto en propiedad porque necesitamos cambiarlo en el
transcurso de la inicialización de la aplicación:
        public static ISessionStorage SessionStorage { get; set; }

        public static void Init(ISessionStorage sessionStorage,
IConfiguracionBD configuracionBD, Assembly assembly)
        {
            SessionStorage = sessionStorage;

            foreach (var conexion in configuracionBD.ListaDatosConexion)
            {
                var configuracionSessionFactory = new Configuration();


 configuracionSessionFactory.SetProperty("connection.connection_string",
conexion.DameConnectionString());
                configuracionSessionFactory.Configure();

                configuracionSessionFactory.AddAssembly(assembly);

                _sessionFactory[conexion.NombreConexion] =
configuracionSessionFactory.BuildSessionFactory();
            }
        }

        public static ISession Session(string database)
        {
            if (SessionStorage == null)
            {
                throw new Exception("NHibernateSession no está inicializado.
Llama a Init antes de operar con él. Comprueba también que haya un
ISessionStorage asociado a NHibernate.");
            }

            ISession session = SessionStorage.Session(database);
            if (session == null)
            {
                session = _sessionFactory[database].OpenSession();
                session.FlushMode = FlushMode.Commit;
                SessionStorage.SetSession(database, session);
            }

            return session;
        }
    }

El 31 de agosto de 2010 14:30, José F. Romaniello
<[email protected]>escribió:

> casi nunca algo esta completamente mal... Sin duda debe haber alguna parte
> del código que esta mal y que nosotros no llegamos a ver aca...
> A mi me parece que el error puede llegar a estar dentro de esta clase:
> public static class NHibernateSession
>
> me despierta sospecha....
>
> El 31 de agosto de 2010 08:45, Maria Teresa Ruiz Espinosa <
> [email protected]> escribió:
>
> Pero tu has visto como creamos las sessiones, y
>> o tenia claro que se hacia un session.close en cada application_EndRequest
>>
>> public static void Application_EndRequest(object sender, EventArgs e)
>>         {
>>             var sesionesActivas =
>> HttpContext.Current.Items.Contains(CLAVE_SESIONES) ?
>> HttpContext.Current.Items[CLAVE_SESIONES] : null;
>>             if (sesionesActivas != null)
>>             {
>>                 foreach (var session in ((IDictionary<string,
>> ISession>)sesionesActivas).Values)
>>                 {
>>                     if (session.Transaction != null &&
>> session.Transaction.IsActive)
>>                     {
>>                         try
>>                         {
>>                             session.Transaction.Commit();
>>                         }
>>                         catch
>>                         {
>>                             session.Transaction.Rollback();
>>                         }
>>                     }
>>                     session.Close();
>>                 }
>>             }
>>         }
>>
>> Entonces esto esta completamente mal.¿?¿?
>>
>>
>>
>>
>>
>>
>> El 31 de agosto de 2010 13:24, José F. Romaniello <[email protected]
>> > escribió:
>>
>>>  Me parece que me estoy volviendo adivino.
>>>
>>> El 31 de agosto de 2010 07:50, Maria Teresa Ruiz Espinosa <
>>> [email protected]> escribió:
>>>
>>> El NHibernateProfiler me dice este error: *Alert: Using a single session
>>>> in multiple threads is likely a bug*
>>>
>>>
>>>
>>> *Te copio exactamente lo que te dije en el primer mail que te envié:*
>>>
>>> Bajo ningún punto de vista deberías usar la misma session, desde
>>>> diferentes threads, y creo que viene por ahí tu problema.
>>>
>>>
>>>  --
>>> Para escribir al Grupo, hágalo a esta dirección:
>>> [email protected]
>>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>>
>>
>>  --
>> Para escribir al Grupo, hágalo a esta dirección:
>> [email protected]
>> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>>
>
>  --
> Para escribir al Grupo, hágalo a esta dirección:
> [email protected]
> Para más, visite: http://groups.google.com/group/NHibernate-Hispano
>

-- 
Para escribir al Grupo, hágalo a esta dirección: 
[email protected]
Para más, visite: http://groups.google.com/group/NHibernate-Hispano

Responder a