La domanda segue dal Fluent NHibernate + multiple databases (non c'è bisogno di seguire questo link, ci dovrebbe essere abbastanza sfondo qui).Come identificare la Session Factory di un'entità particolare con NHibernate fluente e più database
mio problema è questo:
sto utilizzando Fluent NHibernate. La mia applicazione utilizza più database. Ogni database ha le sue entità registrate (mappate) contro di esso. Il risultato è che hanno più Session Factories, ognuna relativa a un singolo DB, e ciascuna "contenente" il proprio insieme di entità mappate.
Per le entità di caricamento, ho creato una classe Factory generica che fornisce alcuni metodi di caricamento standard utilizzabili per qualsiasi entità registrata (in qualsiasi DB). Il problema è: i metodi di caricamento devono utilizzare la factory di sessione corretta per la classe di entità con cui sono occupato. Come dovrei determinare quale factory di sessione devo usare? Ho tutte le fabbriche di Session 'a portata di mano' (e indicizzate dal nome del database), ho solo bisogno di un modo, conoscendo solo il tipo di Entità che sto per caricare, di scegliere la giusta Session Factory da usare.
Ad esempio:
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;
}
Che ha bisogno di andare avanti in GetSessionFactory (boType)?
Grazie per la lettura!
Grazie mille. Questa soluzione ha funzionato. – Trevor
Il metodo GetClassMetadata() restituisce null se il tipo specificato non è gestito dalla Session Factory in questione. – Trevor
Prego. –