Question suivante de Fluent NHibernate + multiple databases (pas besoin de suivre ce lien, il devrait y avoir assez de fond ici).Comment identifier une session Usine particulière avec Fluent NHibernate et plusieurs bases de données
Mon problème est le suivant:
J'utilise Fluent NHibernate. Mon application utilise plusieurs bases de données. Chaque base de données a ses propres entités enregistrées (mappées) contre elle. Le résultat est que plusieurs Usines de Session, chacune se rapportant à une seule DB, et chacune «contenant» son propre ensemble d'entités mappées.
Pour le chargement d'entités, j'ai créé une classe Factory générique qui fournit des méthodes de chargement standard utilisables pour toute entité enregistrée (dans n'importe quelle base de données). Le problème est le suivant: Les méthodes de chargement doivent utiliser la fabrique de sessions correcte pour la classe d'entité avec laquelle je suis occupé. Comment déterminer quelle usine de session dois-je utiliser? J'ai toutes les usines de session en main (et indexées par nom de base de données), j'ai juste besoin d'un moyen, sachant juste le type d'entité que je vais charger, de choisir la bonne session à utiliser.
Par exemple:
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;
}
Que faut-il aller dans GetSessionFactory (BOType)?
Merci d'avoir lu!
Un grand merci. Cette solution a fonctionné. – Trevor
La méthode GetClassMetadata() renvoie null si le type spécifié n'est pas géré par Session Factory en question. – Trevor
De rien. –