private ISessionFactory CreateSessionFactory(NHUnitOfWorkFacilityConfig config) { config.ShouldNotBeNull("config"); if(IsDebugEnabled) log.Debug("SessionFactory를 생성합니다. NHibernate Configuration Filename:" + config.NHibernateConfigurationFilename); try { var cfg = config.NHibernateConfigurationFilename.BuildConfiguration(); if(config.FactoryAlias.IsNotWhiteSpace()) cfg.SetProperty(NHibernate.Cfg.Environment.SessionFactoryName, config.FactoryAlias); foreach(Type mappedEntity in config.Entities) { if(cfg.GetClassMapping(mappedEntity) == null) cfg.AddClass(mappedEntity); } var sessionFactory = cfg.BuildSessionFactory(); NHIoC.Register(Kernel, sessionFactory, typeof(NHRepository<>), config.IsCandidateForRepository); if(IsDebugEnabled) log.Debug("새로운 SessionFactory를 생성하고, Entity들을 등록하고, NHRepository<TEntity> 를 IoC에 등록했습니다."); return sessionFactory; } catch(Exception ex) { if(log.IsErrorEnabled) log.Error(ex); throw; } }
/// <summary> /// Constructor /// </summary> /// <param name="config"></param> public NHUnitOfWorkFacility(NHUnitOfWorkFacilityConfig config) { config.ShouldNotBeNull("config"); _config = config; }
/// <summary> /// Initialize a new instance of NHMultipleUnitOfWorkFacility with the specified NHUnitOfWorkFacilityConfig array. /// </summary> /// <param name="configs"></param> public NHMultipleUnitOfWorkFacility(NHUnitOfWorkFacilityConfig[] configs) { if(IsDebugEnabled) log.Debug("NHMultipleUnitOfWorkFacitity 생성."); _configs = configs; }