每次有人发出请求时都会发出nhibernate解析xml文件,或者在应用程序启动时只执行一次?
这就是我正在做的事情:
public class SessionManager
{
private readonly ISessionFactory _sessionFactory;
public SessionManager()
{
_sessionFactory = GetSessionFactory();
}
public ISession GetSession()
{
return _sessionFactory.OpenSession();
}
private static ISessionFactory GetSessionFactory()
{
return Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2005
.ConnectionString(c =>
c.Is(
@"Data Source=Pc-De-Yassir;Initial Catalog=MyDatabase;User Id=sa;Password=password;Integrated Security=True")
))
.Mappings(m =>
m.AutoMappings.Add
(
AutoPersistenceModel.MapEntitiesFromAssemblyOf<Model.Category>()
))
.BuildSessionFactory();
}
}
以下是我从数据库中获取数据的方法
public IList<Category> GetCategories()
{
var session = new SessionManager().GetSession();
return session.CreateCriteria(typeof(Category))
.List<Category>();}
所以我的问题是,在第一次运行此方法或每次发出请求时,nhibernate会自行配置吗?
答案 0 :(得分:3)
每当你将ISessionFactory实例化到我的头顶时......
答案 1 :(得分:2)
它只做一次。如果要提高应用程序的性能,请使用ngen.exe工具。 nHibernate通常是第一次变慢,因为当应用程序第一次启动时需要编译的代码量很大。
我在应用程序启动时遇到了类似的性能问题,ngen.exe解决了我的问题。