La pregunta sigue desde Fluent NHibernate + multiple databases (no es necesario seguir este enlace, aquí debería haber suficientes antecedentes).Cómo identificar la Fábrica de Sesiones de una entidad particular con NHibernate Fluido y Múltiples Bases de Datos
Mi problema es el siguiente:
estoy usando Fluido NHibernate. Mi aplicación usa múltiples bases de datos. Cada base de datos tiene sus propias entidades registradas (mapeadas) en su contra. El resultado es que tienen varias Fábricas de Sesión, cada una relacionada con una única base de datos, y cada una "contiene" su propio conjunto de entidades mapeadas.
Para cargar entidades He creado una clase de fábrica genérica que proporciona algunos métodos de carga estándar utilizables para cualquier entidad registrada (en cualquier base de datos). El problema es: los métodos de carga necesitan usar la fábrica de sesiones correcta para la clase de entidad con la que estoy ocupado. ¿Cómo puedo determinar qué fábrica de sesión necesito usar? Tengo todas las Fábricas de Sesión 'a la mano' (e indexadas por el nombre de la base de datos), solo necesito un medio, conociendo solo el tipo de Entidad que estoy a punto de cargar, de elegir la Fábrica de Sesión adecuada para usar.
Por ejemplo:
public IBaseBusinessObject CreatePopulatedInstance(Type boType, Guid instanceKey)
{
IBaseBusinessObject result = null;
ISessionFactory sessionFactory = GetSessionFactory(boType);
using (ISession session = sessionFactory.OpenSession())
{
using (session.BeginTransaction())
{
result = (IBaseBusinessObject)session.Get(boType, instanceKey);
}
}
return result;
}
Lo que tiene que ir en en GetSessionFactory (BOType)?
¡Gracias por leer!
Gracias. Esta solución funcionó. – Trevor
El método GetClassMetadata() devuelve nulo si el tipo especificado no está gestionado por la fábrica de sesiones en cuestión. – Trevor
De nada. –