Exemple #1
0
        public void FixtureSetup()
        {
            string cnnString =
                "Server=127.0.0.1;Port=5432;Database=HexaCorePostgreSqlTest;User Id=postgres;Password=password;";

            ApplicationContext.Start(cnnString);

            // Validator and TraceManager
            IoCContainer container = ApplicationContext.Container;

            container.RegisterInstance <ILoggerFactory>(new Log4NetLoggerFactory());

            // Context Factory
            var ctxFactory = new NHibernateUnitOfWorkFactory(DbProvider.PostgreSQLProvider,
                                                             cnnString, string.Empty, typeof(PostgreSQLTest).Assembly,
                                                             ApplicationContext.Container);

            container.RegisterInstance <IUnitOfWorkFactory>(ctxFactory);
            container.RegisterInstance <IDatabaseManager>(ctxFactory);

            // Repositories
            //container.RegisterType<IEntityARepository, EntityARepository>();

            // Services

            if (!ctxFactory.DatabaseExists())
            {
                ctxFactory.CreateDatabase();
            }

            ctxFactory.ValidateDatabaseSchema();

            ctxFactory.RegisterSessionFactory(container);
        }
Exemple #2
0
        public void Load(IoCContainer container)
        {
            var context = new HttpContextWrapper(HttpContext.Current);

            container.RegisterInstance<HttpContextBase>(context, ComponentLifeStyle.PerWebRequest);
            container.RegisterInstance<HttpRequestBase>(context.Request, ComponentLifeStyle.PerWebRequest);
            container.RegisterInstance<HttpResponseBase>(context.Response, ComponentLifeStyle.PerWebRequest);
            container.RegisterInstance<HttpServerUtilityBase>(context.Server, ComponentLifeStyle.PerWebRequest);
            container.RegisterInstance<HttpSessionStateBase>(context.Session, ComponentLifeStyle.PerWebRequest);
        }
        public NHContextFactory(DbProvider provider, string connectionString, string cacheProvider, Assembly mappingsAssembly, IoCContainer container)
        {
            _DbProvider = provider;
            _connectionString = connectionString;

            FluentConfiguration cfg = null;

            switch (_DbProvider)
            {
                case DbProvider.MsSqlProvider:
                {
                    cfg = Fluently.Configure().Database(MsSqlConfiguration.MsSql2008
                        .Raw("format_sql", "true")
                        .ConnectionString(_connectionString))
                        .ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.SqlExceptionConverter, typeof(SqlExceptionHandler).AssemblyQualifiedName))
                        .ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.DefaultSchema, "dbo"));

                    break;
                }
                case DbProvider.SQLiteProvider:
                {
                    cfg = Fluently.Configure().Database(SQLiteConfiguration.Standard
                        .Raw("format_sql", "true")
                        .ConnectionString(_connectionString));

                    _InMemoryDatabase = _connectionString.ToUpperInvariant().Contains(":MEMORY:");

                    break;
                }
                case DbProvider.SqlCe:
                {
                    cfg = Fluently.Configure().Database(MsSqlCeConfiguration.Standard
                            .Raw("format_sql", "true")
                            .ConnectionString(_connectionString))
                            .ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.SqlExceptionConverter, typeof(SqlExceptionHandler).AssemblyQualifiedName));
                        
                    _validationSupported = false;

                    break;
                }
                case DbProvider.Firebird:
                {
                    cfg = Fluently.Configure().Database(new FirebirdConfiguration()
                            .Raw("format_sql", "true")
                            .ConnectionString(_connectionString));

                    break;
                }
				case DbProvider.PostgreSQLProvider:
                {
                    cfg = Fluently.Configure().Database(PostgreSQLConfiguration.PostgreSQL82
                            .Raw("format_sql", "true")
                            .ConnectionString(_connectionString));
				
					_validationSupported = false;

                    break;
                }
            }

            Guard.IsNotNull(cfg, string.Format("Db provider {0} is currently not supported.", _DbProvider.GetEnumMemberValue()));

            var pinfo = typeof(FluentConfiguration)
                .GetProperty("Configuration", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);

            var nhConfiguration = pinfo.GetValue(cfg, null);
            container.RegisterInstance<Configuration>(nhConfiguration);

            cfg.Mappings(m => m.FluentMappings.Conventions.AddAssembly(typeof(NHContextFactory).Assembly))
                .Mappings(m => m.FluentMappings.Conventions.AddAssembly(mappingsAssembly))
                .Mappings(m => m.FluentMappings.AddFromAssembly(mappingsAssembly))
                .Mappings(m => m.HbmMappings.AddFromAssembly(typeof(NHContextFactory).Assembly))
                .Mappings(m => m.HbmMappings.AddFromAssembly(mappingsAssembly))
				.ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.BatchSize, "100"))
                .ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.UseProxyValidator, "true"));

            if (!string.IsNullOrEmpty(cacheProvider))
            {
                cfg.ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.CacheProvider, cacheProvider)) //"NHibernate.Cache.HashtableCacheProvider"
                    .ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.UseSecondLevelCache, "true"))
                    .ExposeConfiguration(c => c.Properties.Add(NHibernate.Cfg.Environment.UseQueryCache, "true"));
            }

            _builtConfiguration = cfg.BuildConfiguration();
            _builtConfiguration.SetProperty(NHibernate.Cfg.Environment.ProxyFactoryFactoryClass, 
                typeof(NHibernate.ByteCode.Castle.ProxyFactoryFactory).AssemblyQualifiedName);

            #region Add Listeners to NHibernate pipeline....

            _builtConfiguration.SetListeners(ListenerType.FlushEntity,
                new IFlushEntityEventListener[] { new AuditFlushEntityEventListener() });

            _builtConfiguration.SetListeners(ListenerType.PreInsert,
                _builtConfiguration.EventListeners.PreInsertEventListeners.Concat<IPreInsertEventListener>(
                new IPreInsertEventListener[] { new ValidateEventListener(), new AuditEventListener() }).ToArray());

            _builtConfiguration.SetListeners(ListenerType.PreUpdate,
                _builtConfiguration.EventListeners.PreUpdateEventListeners.Concat<IPreUpdateEventListener>(
                new IPreUpdateEventListener[] { new ValidateEventListener(), new AuditEventListener() }).ToArray());

            #endregion
        }
 // Registers NH session factoy for testing purposes.
 public void RegisterSessionFactory(IoCContainer container)
 {
     _CreateSessionFactory();
     container.RegisterInstance<ISessionFactory>(_sessionFactory);
 }
 // Registers Raven IDocumentStore for testing purposes.
 public void RegisterSessionFactory(IoCContainer container)
 {
     container.RegisterInstance<EmbeddableDocumentStore>(_documenFactory);
 }