我有一个使用 fluent NHibernate 的 ASP.NET MVC4 web api,但是当我运行调试时,我第一次尝试访问任何使用数据库的站点需要 1.5 分钟,所以我发现Fluent nHibernate 启动时间慢,但我不确定如何利用它,
当它在实时服务器上运行时,它必须垃圾收集会话数据,因为如果我很长时间没有使用它,它需要很长时间才能再次配置。
是否有可能将其缩短到 10 秒以下而不是 1.5 分钟?
我当前的 SessionFactory 类看起来像这样
public class SessionFactory
{
private static readonly string ConnString = System.Configuration.ConfigurationManager.ConnectionStrings["MySQLConnectionString"].ConnectionString;
private static ISessionFactory _session;
private static readonly object SyncRoot = new Object();
private static ISessionFactory CreateSessionFactory()
{
return Fluently.Configure()
.Database(MySQLConfiguration
.Standard
.ConnectionString(ConnString))
.Mappings(m => m.FluentMappings
.AddFromAssemblyOf<UserMap>())
.ExposeConfiguration(UpdateSchema)
.BuildSessionFactory();
}
private static void UpdateSchema(Configuration cfg)
{
new SchemaUpdate(cfg).Execute(false, true);
}
public static ISession Session
{
get
{
if (_session == null)
{
lock (SyncRoot)
{
if (_session == null)
_session = CreateSessionFactory();
}
}
return _session.OpenSession();
}
}
}
这是 dotTrace 的屏幕截图
对我的主机上的请求进行计时,初始请求需要 1 分 50 秒,而那是在“实时”服务器上(我无法控制那里的 IIS)