StructureMap, NHibernate и несколько баз данных

Я работаю над приложением Asp.Net MVC 3 с использованием Fluent NHibernate. Я просто пытаюсь добавить контейнер IoC с помощью StructureMap.

Я реализовал фабрику настраиваемых контроллеров, которая использует StructureMap для создания контроллера и внедрения зависимостей. Каждый конструктор контроллера принимает одну или несколько служб, которые, в свою очередь, принимают DAO в качестве аргумента конструктора. Каждый конструктор DAO принимает ISessionFactory.

Для моего реестра StructureMap NHibernate у меня есть следующее:

internal class NHibernateRegistry : Registry
{
    public NHibernateRegistry()
    {
        var connectionString = ConfigurationManager.ConnectionStrings["AppDb"].ConnectionString;

        For<ISessionFactory>()
                .Singleton()
                .Use(x => new AppSessionFactory().GetSessionFactory(connectionString));

        For<ISession>()
            .HybridHttpOrThreadLocalScoped()
            .Use(x => x.GetInstance<ISessionFactory>().OpenSession());
    }

}

public class AppSessionFactory
{
    public ISessionFactory GetSessionFactory(string connectionString)
    {
        return GetConfig(connectionString)
                .BuildSessionFactory();
    }

    public static FluentConfiguration GetConfig(string connectionString)
    {
        return Fluently.Configure()
            .Database(MsSqlConfiguration.MsSql2005.ConnectionString(x => x.Is(connectionString)))
            .Mappings(
                x => x.FluentMappings.AddFromAssemblyOf<AppEntity>());
    }
}

Все это отлично работает для одной базы данных и одной фабрики сеанса. Однако приложение использует несколько баз данных.

Как лучше всего с этим справиться?

7
задан TonE 28 October 2011 в 14:52
поделиться