NHiberante 5.2

I want to switch all ManyToOne relationships to lazy in Session Factory

part ChangeGeneratorsToAssigned work, but ChangeAllManyToOneLazy do nothing

     
   internal static ISessionFactory BuildSessionFactory(string 
connectionString, Settings settings) {
            var configuration = new Configuration();

            configuration.DataBaseIntegration(cfg => {
                cfg.ConnectionString = connectionString;
                cfg.PrepareCommands = true;

                cfg.Driver<SqlClientDriver>();
                cfg.Dialect<MsSql2008Dialect>();

                cfg.AutoCommentSql = settings.UseDefaultLogger;
                cfg.LogFormattedSql = settings.UseDefaultLogger;
                cfg.LogSqlInConsole = settings.UseDefaultLogger;

                cfg.KeywordsAutoImport = Hbm2DDLKeyWords.AutoQuote;

                cfg.BatchSize = 100;

                if ( settings.AutoAction == AutoAction.Validate ) {
                    cfg.SchemaAction = SchemaAutoAction.Validate;
                }
            });

            var mapper = new ModelMapper();

            foreach ( var type in settings.Mappings ) {
                var instance = CreateMappingInstance(type, settings);
                mapper.AddMapping(instance);
            }

            configuration.AddMapping(mapper.
CompileMappingForAllExplicitlyAddedEntities());

            if ( settings.UseAssignedGenerator ) {
                ChangeGeneratorsToAssigned(configuration, settings.Mappings
);
            }
            if ( settings.UseAllLazy ) {
                ChangeAllManyToOneLazy(configuration, settings.Mappings);
            }
            SchemaMetadataUpdater.QuoteTableAndColumns(configuration, new 
MsSql2008Dialect());

            return configuration.BuildSessionFactory();
        }

        private static void ChangeGeneratorsToAssigned(Configuration 
configuration, Type[] mappingTypes) {
            foreach ( var mappingType in mappingTypes ) {
                var genericType = mappingType.BaseType.GetGenericArguments
().First();
                if ( configuration.GetClassMapping(genericType).Key is 
NHibernate.Mapping.SimpleValue keyValue ) {
                    keyValue.IdentifierGeneratorStrategy = "assigned";
                }
            }
        }









*        private static void ChangeAllManyToOneLazy(Configuration 
configuration, Type[] mappingTypes) {            foreach ( var mappingType 
in mappingTypes ) {                var genericType = 
mappingType.BaseType.GetGenericArguments().First();                foreach 
( var item in configuration.GetClassMapping(genericType).PropertyIterator ) 
{                    if ( item.Value is NHibernate.Mapping.ManyToOne value 
) {                        value.IsLazy = true;                    }        
        }        }*

        private static IConformistHoldersProvider CreateMappingInstance(Type 
type, Settings settings) {
            IConformistHoldersProvider holdersProvider;
            if ( typeof(ICustomizableMapping).IsAssignableFrom(type) ) {
                holdersProvider = Activator.CreateInstance(type, settings) 
as IConformistHoldersProvider;
            }
            else {
                holdersProvider = Activator.CreateInstance(type) as 
IConformistHoldersProvider;
            }
            return holdersProvider;
        }


-- 
You received this message because you are subscribed to the Google Groups 
"nhusers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nhusers/50415e93-7a31-4028-9586-7cf18d2b77dd%40googlegroups.com.

Reply via email to