protected override void Initialize()
{
this.Container
.RegisterType<DatabaseConfigurator, MsSql2005DatabaseConfigurator>("System.Data.SqlClient")
.RegisterType<DatabaseConfigurator>(new InjectionFactory(this.CreateDatabaseConfigurator))
.RegisterType<ISessionFactory>(
new ContainerControlledLifetimeManager(),
new InjectionFactory(CreateSessionFactory))
.RegisterType<ISession>(new UnitOfWorkLifetimeManager(), new InjectionFactory(this.CreateSession))
.RegisterType<Func<ISession>>(
new ContainerControlledLifetimeManager(),
new InjectionFactory(
c =>
{
Func<ISession> func = () => c.Resolve<ISession>();
return func;
}))
.RegisterType(typeof(IRepository), typeof(Repository), new ContainerControlledLifetimeManager())
.RegisterType<ITransactionManager, TransactionManager>();
LoggerProvider.SetLoggersFactory(new NHibernate.Logging.CommonLogging.CommonLoggingLoggerFactory());
this.RegisterCommands();
this.ConfigureExceptionHandling();
}