Вопрос следует из Свободный NHibernate + несколько баз данных (не нужно переходить по этой ссылке, здесь должно быть достаточно информации).
Моя проблема заключается в следующем:
Я использую Fluent NHibernate. Мое приложение использует несколько баз данных. Каждая база данных имеет свои собственные объекты, зарегистрированные (сопоставленные) против нее. В результате получается несколько сессионных фабрик, каждая из которых относится к одной БД, и каждая «содержит» свой собственный набор сопоставленных сущностей.
Для загрузки сущностей я создал общий класс Factory, который предоставляет несколько стандартных методов загрузки, которые можно использовать для любой зарегистрированной сущности (в любой БД). Проблема в том, что методы загрузки должны использовать правильную фабрику сеансов для класса сущностей, с которым я занят. Как определить, какую фабрику сессий мне нужно использовать? У меня есть все Session Factories «под рукой» (и проиндексированы по имени базы данных), мне просто нужен способ, зная только тип сущности, которую я собираюсь загрузить, выбрать правильную Session Factory для использования.
Например:
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;
}
Что нужно сделать в GetSessionFactory (boType)?
Спасибо за чтение!