public static Configuration UseRepositories(this Configuration configuration, string connectionSection, params Assembly[] assemblies) { configuration.RegisterRepositoriesAssembly(assemblies); string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings[connectionSection].ConnectionString; string providerName = System.Configuration.ConfigurationManager.ConnectionStrings[connectionSection].ProviderName; IPersistenceConfigurer configurer = null; switch (providerName) { case "System.Data.SqlClient": configurer = MsSqlConfiguration.MsSql2008.ConnectionString(connectionString) .AdoNetBatchSize(500) .Dialect <NHibernate.Dialect.MsSql2008Dialect>() .FormatSql() .ShowSql() .UseOuterJoin(); break; case "MySql.Data.MySqlClient": configurer = MySQLConfiguration.Standard.ConnectionString(connectionString) .AdoNetBatchSize(500) .Dialect <NHibernate.Dialect.MySQL55InnoDBDialect>() .FormatSql() .ShowSql() .UseOuterJoin(); break; } NhSessionFactory.Instance(configurer, configuration.repositoryAssemblies.ToArray()); Engine.RegisterDataBase(providerName, connectionString); foreach (Assembly assembly in configuration.repositoryAssemblies) { Type[] types = assembly.GetTypes().Where(item => typeof(IRepository).IsAssignableFrom(item) && !item.IsAbstract).ToArray(); ((AutofacObjectContainer)ObjectContainer.Current).ContainerBuilder.RegisterTypes(types).AsImplementedInterfaces().SingleInstance(); } return(configuration); }