public Configuration GetConfiguration()
        {
            if (this.configuration != null)
            {
                return(this.configuration);
            }

            var mappingAssemblies    = GetMappingAssemblies();
            var autoPersistenceModel = GenerateAutoPersistenceModel(mappingAssemblies);

            var builder = new NHibernateSessionFactoryBuilder()
                          .AddMappingAssemblies(mappingAssemblies)
                          .UseAutoPersistenceModel(autoPersistenceModel);

            var defaultConfigFilePath = Path.Combine(basePath, NHibernateSessionFactoryBuilder.DefaultNHibernateConfigFileName);

            if (File.Exists(defaultConfigFilePath))
            {
                Debug.WriteLine(
                    $"Found default configuration file {NHibernateSessionFactoryBuilder.DefaultNHibernateConfigFileName} in output folder. Loading configuration from '{defaultConfigFilePath}'.");
                builder.UseConfigFile(defaultConfigFilePath);
            }

            configuration = builder.BuildConfiguration();
            return(configuration);
        }