public override void Configure(IWindsorContainer container) { container.AddFacility<PersistenceConversationFacility>(); container.AddFacility<FactorySupportFacility>(); NHibernate.Cfg.Environment.BytecodeProvider = new EnhancedBytecode(container); var nhConfigurator = new DefaultSessionFactoryConfigurationProvider(); //sessionFactory part var sessionFactoryProvider = new SessionFactoryProvider(nhConfigurator); container.Register(Component.For<ISessionFactory>().UsingFactoryMethod(() => sessionFactoryProvider.GetFactory(null))); container.Register(Component.For<ISessionFactoryImplementor>().UsingFactoryMethod(() => (ISessionFactoryImplementor)sessionFactoryProvider.GetFactory(null))); //uNhAddIns part container.Register(Component.For<ISessionFactoryProvider>().Instance(sessionFactoryProvider)); container.Register(Component.For<ISessionWrapper>().ImplementedBy<SessionWrapper>()); container.Register(Component.For<IConversationFactory>().ImplementedBy<DefaultConversationFactory>()); container.Register(Component.For<IConversationsContainerAccessor>().ImplementedBy<NhConversationsContainerAccessor>()); nhConfigurator.BeforeConfigure += (sender, e) => { var nhCfg = e.Configuration; nhCfg.RegisterEntityNameResolver(); RegisterProperties(nhCfg); RegisterMappings(nhCfg); RegisterListeners(nhCfg); RegisterEntityCaches(nhCfg); SchemaMetadataUpdater.QuoteTableAndColumns(nhCfg); e.Configured = true; // prevent read from Nhibernate.cfg }; nhConfigurator.AfterConfigure += (sender, e) => { var nhCfg = e.Configuration; //TryUpdateSchema var value = ConfigurationManager.AppSettings["SchemaUpdate"]; if (value.IsNotNullOrEmpty() && value.Equals(bool.TrueString, StringComparison.OrdinalIgnoreCase)) new SchemaUpdate(nhCfg).Execute(false, true); }; base.Configure(container); }
public void Configure(IWindsorContainer container) { container.AddFacility<PersistenceConversationFacility>(); Environment.BytecodeProvider = new EnhancedBytecode(container); var nhConfigurator = new DefaultSessionFactoryConfigurationProvider(); nhConfigurator.BeforeConfigure += (sender, e) => { ValidatorInitializer.Initialize(e.Configuration); e.Configuration.RegisterEntityNameResolver(); e.Configuration.Properties[Environment.CollectionTypeFactoryClass] = typeof (WpfCollectionTypeFactory).AssemblyQualifiedName; }; var sfp = new SessionFactoryProvider(nhConfigurator); container.Register(Component.For<ISessionFactoryProvider>() .Instance(sfp)); container.Register( Component.For<ISessionFactory>().UsingFactoryMethod( () => container.Resolve<ISessionFactoryProvider>().GetFactory(null)) ); container.Register( Component.For<ISessionFactoryImplementor>().UsingFactoryMethod( () => (ISessionFactoryImplementor) container.Resolve<ISessionFactoryProvider>().GetFactory(null))); container.Register(Component.For<ISessionWrapper>().ImplementedBy<SessionWrapper>()); container.Register(Component.For<IConversationFactory>().ImplementedBy<DefaultConversationFactory>()); container.Register( Component.For<IConversationsContainerAccessor>().ImplementedBy<NhConversationsContainerAccessor>()); }