При создании Configuration и ISessionFactory NHibernate анализирует конфигурацию и сопоставления для построения своих структур данных времени выполнения.(Это верно и для EF и LINQ-to-SQL, хотя и скрыто в контексте.) Мало что можно сделать, чтобы устранить эту стоимость, хотя 2 минуты кажутся ужасно длинными.Время выполнения этого кода:
var stopwatch = new Stopwatch();
stopwatch.Start();
var cfg = new Configuration();
cfg.Configure();
var sessionFactory = cfg.BuildSessionFactory();
stopwatch.Stop();
Console.WriteLine("Startup time was " + stopwatch.ElapsedMilliseconds + "ms");
Это демонстрационный проект, имеющий только несколько классов и сопоставлений, но он занял ~ 850 мс без подключенного отладчика.С подключенным отладчиком это заняло около 2 секунд.
Вы пытались профилировать свое приложение, чтобы увидеть, где оно тратит 2 минуты?