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.