示例#1
0
        public static NHibernate.ISessionFactory BuildSessionFactory()
        {
            FluentNHibernate.Cfg.Db.MsSqlConfiguration databaseConfiguration = FluentNHibernate.Cfg.Db.MsSqlConfiguration.MsSql2012
                                                                               .MaxFetchDepth(5)
                                                                               .IsolationLevel(System.Data.IsolationLevel.ReadCommitted)
                                                                               .ConnectionString("Data Source=127.0.0.1,1433,db_port;User ID=devweekuser;Password=devweekpwd;Database=DemoDB;Application Name=OragonSamplesTest")
                                                                               .ShowSql().FormatSql()
                                                                               .DefaultSchema("dbo");

            FluentNHibernate.Cfg.FluentConfiguration configuration = FluentNHibernate.Cfg.Fluently
                                                                     .Configure()
                                                                     .Database(databaseConfiguration)
                                                                     .Cache(it =>
                                                                            it.UseQueryCache()
                                                                            .ProviderClass <NHibernate.Cache.HashtableCacheProvider>()
                                                                            )
                                                                     .Diagnostics(it =>
                                                                                  it.Enable(true)
                                                                                  .OutputToConsole()
                                                                                  )
                                                                     .Mappings(it =>
            {
                it.FluentMappings.AddFromAssemblyOf <Data.Mappings.ClassroomMapper>();
            })
                                                                     .ExposeConfiguration(config =>
            {
                NHibernate.Tool.hbm2ddl.SchemaUpdate update = new NHibernate.Tool.hbm2ddl.SchemaUpdate(config);

                update.Execute(true, true);
            });
            ;

            NHibernate.ISessionFactory sessionFactory = configuration.BuildSessionFactory();
            return(sessionFactory);
        }
        /// <summary>
        ///     Principal método privado, realiza a criação do SessionFactory e este não deve ser criado novamente até que o domínio de aplicação seja finalizado.
        /// </summary>
        /// <returns></returns>
        protected override NH.ISessionFactory BuildSessionFactoryInternal()
        {
            FluentNH.Cfg.Db.IPersistenceConfigurer databaseConfiguration = this.BuildPersistenceConfigurer();

            Func <NH.Cfg.Configuration, NH.Cfg.Configuration> configureWithRawProperties = (config) => {
                if (this.NHibernateRawConfigurationValues != null && this.NHibernateRawConfigurationValues.Count > 0)
                {
                    foreach (var rawConfigurationValue in this.NHibernateRawConfigurationValues)
                    {
                        config.SetProperty(rawConfigurationValue.Key, rawConfigurationValue.Value);
                    }
                }
                return(config);
            };

            FluentNH.Cfg.FluentConfiguration configuration = FluentNH.Cfg.Fluently
                                                             .Configure()
                                                             .Database(databaseConfiguration)
                                                             .Cache(it =>
                                                                    it.UseQueryCache()
                                                                    .ProviderClass <NH.Cache.HashtableCacheProvider>()
                                                                    )
                                                             .Diagnostics(it =>
                                                                          it.Enable(this.EnabledDiagnostics)
                                                                          .OutputToConsole()
                                                                          )
                                                             .ExposeConfiguration(it =>
                                                                                  configureWithRawProperties(
                                                                                      it
                                                                                      .SetProperty("command_timeout", this.CommandTimeout.ToString(CultureInfo.InvariantCulture))
                                                                                      .SetProperty("adonet.batch_size", this.BatchSize.ToString(CultureInfo.InvariantCulture))
                                                                                      )
                                                                                  );

            foreach (string typeName in this.TypeNames)
            {
                Type typeInfo = Type.GetType(typeName);
                if (typeInfo == null)
                {
                    throw new ConfigurationErrorsException(string.Format(CultureInfo.InvariantCulture, "Cannot load the Type '{0}', defined in TypeNames property of FluentNHibernateSessionFactoryBuilder", typeName));
                }
                configuration.Mappings(it =>
                {
                    it.FluentMappings.AddFromAssembly(typeInfo.Assembly);
                    it.HbmMappings.AddFromAssembly(typeInfo.Assembly);
                });
            }

            NH.ISessionFactory sessionFactory = configuration.BuildSessionFactory();

            return(sessionFactory);
        }