【发布时间】:2015-05-10 20:54:49
【问题描述】:
我正在开发一个使用 Asp .Net MVC 和 NHibernate 作为 ORM 工具的网站。 我只是使用一些原则实现了一些模式。 它们是 IoC、Service-Repository 和 UoW。
我在缓存方面几乎使用了 NHibernate 的所有功能,如下所示
- 延迟加载
- 二级缓存
- 查询缓存
- 实体缓存
到目前为止一切都很好,我可以在 1 秒内加载整个网站,总共几乎 7,5 MB 大小(主要是来自 Azure 存储的图像),而不需要 Asp .Net MVC 的 outputcache 和上述基础设施,但是这个动作正在发生当我第二次加载网站时。
最大的问题是 NHibernate SessionFactory 在项目首次加载时增加了将近 15 秒的正常运行时间,这是不可接受的。
我实际上有 25 个实体和它们的映射,为什么第一次需要这么长时间?
这是我的 Nhibernate 配置
public static ISessionFactory GetSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012
.Raw("connection.isolation", "ReadCommitted")
.ConnectionString("connectionString")
.Mappings(gX => gX.FluentMappings.AddFromAssemblyOf<MyEntity>())
.Cache(gX => gX.ProviderClass<SysCacheProvider>()
.UseSecondLevelCache()
.UseQueryCache())
.BuildSessionFactory();
}
顺便说一句,我对SessionFactory的创建过程没有任何问题。唯一的问题是我的项目第一次的正常运行时间。我刚刚解决了许多关于缓存策略的问题,但无法弄清楚 SessionFactory。
有什么想法或建议吗? 谢谢
【问题讨论】:
标签: nhibernate fluent-nhibernate sessionfactory uptime