Одним из способов ускорить запуск является сериализация объекта конфигурации, который занимает большую часть времени запуска для сборки и проверки, см. Здесь .
Код для реализации вашего подхода:
var minisessionfactory = Fluently.Configure()
.DataBase(SomeConfiguration.Standard....)
// only add the relevant mappings
.Mapping(m => m.FluentMappings.Add<AMap>().Add<BMap>()...)
.BuildSessionfactory();
ThreadPool.QueueUserWorkItem(state =>
{
RealSessionFactory = Fluently.Configure()
.DataBase(SomeConfiguration.Standard....)
// only add the relevant mappings
.Mapping(m => ...)
.BuildSessionfactory();
SessionFactoryReady = true;
});
// do some Stuff with minisessionfactory
Обновление:
Вы измерили, где на самом деле тратится время: построение конфигурации или сборка фабрики?
Если он строит фабрику, включите полную регистрацию, чтобы увидеть, есть ли какие-то шаги, которые занимают много времени и могут быть отключены.
UpdateUpdate: простые реализации
ISession GetSession()
{
while (!SessionFactoryReady) Thread.Sleep(1000);
return RealSessionFactory.OpenSession();
}
// or
ISessionFactory SessionFactory
{
get
{
while (!SessionFactoryReady) Thread.Sleep(1000);
return RealSessionFactory;
}
}