Несколько сеансовых фабрик nhibernate и castle windsor
Мне нужна небольшая помощь, чтобы решить проблему с помощью Castle Windsor и NHibernate.
Я уже пару дней читаю разные статьи на эту тему и не могу найти решения своей конкретной проблемы. Что я хочу сделать, так это иметь два подключения к базе данных, локальное и удаленное. Удаленное соединение будет создаваться только по требованию, поэтому оно может быть лениво загружено. Я не могу иметь определенные репозитории, использующие одну фабрику сеансов, а другие - другую фабрику, фабрики должны быть доступны для всех репозиториев, чтобы я мог синхронизировать репозитории.
Я посмотрел сюда: https://lookonmyworks.co.uk/2011/04/05/managing-multiple-session-factories-using-named-instances/ но, как вы можете видеть, он связывает разные репозитории с разными фабриками сеансов.
Я понимаю, что когда вы используете IoC, вы должны дать ему какую-то стратегию разрешения, чтобы знать, какую фабрику сеансов использовать при определенных обстоятельствах, и сейчас я просто озадачен тем, как я собираюсь это сделать. Придется ли мне в конечном итоге создавать второй набор репозиториев для удаленных репозиториев и явно указывать замку Виндзор использовать удаленный контекст для этих репозиториев?
public void Install(IWindsorContainer container, IConfigurationStore store) { container.Kernel.ComponentRegistered += Kernel_ComponentRegistered; container.Register( Component.For<ISessionFactory>().UsingFactoryMethod(CreateNhSessionFactory).LifeStyle.Singleton, Component.For<NhUnitOfWorkInterceptor>().LifeStyle.Transient, Classes.FromAssembly(Assembly.GetAssembly(typeof(NhClaimRepository))).InSameNamespaceAs<NhClaimRepository>().WithService.DefaultInterfaces().LifestyleTransient(), Classes.FromAssembly(Assembly.GetAssembly(typeof(ClaimService))).InSameNamespaceAs<ClaimService>().WithService.DefaultInterfaces().LifestyleTransient() ); } private static ISessionFactory CreateNhSessionFactory() { var config = new Configuration().Configure(); return Fluently.Configure(config) .Mappings(m => m.FluentMappings.AddFromAssemblyOf<AttorneyMap>()) .ProxyFactoryFactory<AddPropertyChangedProxyFactoryFactory>() .BuildSessionFactory(); }
Извините за беспорядочный поток сообщения сознания, мозг был запутан во время этого процесса. Любая помощь очень ценится.
Что я уже пробовал:
Попробовать это: https://lookonmyworks.co.uk/2011/04/05/managing-multiple-session-factories-using-named-instances/
но для этого требуются отдельные репозитории для каждой фабрики сеансов.
А это: http://fabiomaulo.blogspot.com/2009/09/configure-sessionfactory-providers.html та же ситуация.
Я также просмотрел несколько постов на SO, но безрезультатно. Прямо сейчас я нахожусь в той точке, где я просто собираюсь выбросить DI из окна и написать отдельную DLL с помощью EF или чего-то еще, но мне придется снова написать все мои репозитории в этом новом проекте.