protected override void UpdateConfigurationSettings(IFluentConfigurationWrapper fluentConfiguration)
        {
            base.UpdateConfigurationSettings(fluentConfiguration);

            fluentConfiguration.Configuration.Properties["dialect"] = typeof(ChillowMySql5Dialect).AssemblyQualifiedName;
            fluentConfiguration.Configuration.Properties["connection.driver_class"] = typeof(ChillowMySqlDataDriver).AssemblyQualifiedName;
        }
 protected virtual void UpdateConfigurationSettings(IFluentConfigurationWrapper fluentConfiguration)
 {
     fluentConfiguration.Configuration.Properties["connection.provider"] = "NHibernate.Connection.DriverConnectionProvider";
     //fluentConfiguration.Configuration.Properties["proxyfactory.factory_class"] = typeof(global::NHibernate.Bytecode.DefaultProxyFactoryFactory).AssemblyQualifiedName;
     fluentConfiguration.Configuration.Properties["connection.isolation"] = "ReadCommitted";
     fluentConfiguration.Configuration.Properties["hbm2ddl.keywords"] = "auto-quote";
     fluentConfiguration.Configuration.Properties["show_sql"] = "false";
     fluentConfiguration.Configuration.Properties["use_reflection_optimizer"] = "true";
     fluentConfiguration.Configuration.Properties["max_fetch_depth"] = "3";
 }
        public void NotifyConfiguration(IFluentConfigurationWrapper fluentConfiguration)
        {
            RegisterConventions(fluentConfiguration);

            RegisterConfigurationListeners(fluentConfiguration);

            UpdateConfigurationSettings(fluentConfiguration);

            RegisterMappings(fluentConfiguration);
        }
        protected virtual void RegisterConfigurationListeners(IFluentConfigurationWrapper fluentConfiguration)
        {
            //fluentConfiguration.Configuration.SetListener(ListenerType.SaveUpdate, new UserAuditingSaveOrUpdateEventListener());

            if (fluentConfiguration.Configuration.EventListeners.PreInsertEventListeners.Count(l => (l is PreInsertValidateEventListener)) == 0)
            {
                fluentConfiguration.Configuration.AppendListeners(ListenerType.PreInsert, new IPreInsertEventListener[] { new UserAuditingSaveOrUpdateEventListener<Guid>(), new PreInsertValidateEventListener() });
                fluentConfiguration.Configuration.AppendListeners(ListenerType.PreUpdate, new IPreUpdateEventListener[] { new UserAuditingSaveOrUpdateEventListener<Guid>(), new PreUpdateValidateEventListener() });
                fluentConfiguration.Configuration.AppendListeners(ListenerType.PreCollectionUpdate, new IPreCollectionUpdateEventListener[] { new PreCollectionValidateUpdateEventListener() });
            }
        }
        protected virtual void RegisterConventions(IFluentConfigurationWrapper fluentConfiguration)
        {
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<ClassConvention>();
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<ForeignKeyConvention>();
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<IdConvention>();
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<JoinedSubclassConvention>();
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<ManyToManyConvention>();

            fluentConfiguration.Mappings.FluentMappings.Conventions.Add(AutoImport.Never());
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add(DefaultLazy.Always());

            /*
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add(DynamicInsert.AlwaysTrue());
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add(DynamicUpdate.AlwaysTrue());
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add(OptimisticLock.Is(x => x.Version()));
            */

            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<ValueTypeNullableConvention>();

            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<RequiredPropertyConvention>();
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<RequiredReferenceConvention>();
            fluentConfiguration.Mappings.FluentMappings.Conventions.Add<StringLengthPropertyConvention>();
        }
 protected override void RegisterMappings(IFluentConfigurationWrapper fluentConfiguration)
 {
     fluentConfiguration.Mappings.FluentMappings.Add(typeof(CarMap));
     fluentConfiguration.Mappings.FluentMappings.Add(typeof(SaleMap));
 }
 protected override void RegisterMappings(IFluentConfigurationWrapper fluentConfiguration)
 {
 }
 protected abstract void RegisterMappings(IFluentConfigurationWrapper fluentConfiguration);