代码之家  ›  专栏  ›  技术社区  ›  Hannoun Yassir

氨气起动性能

  •  0
  • Hannoun Yassir  · 技术社区  · 15 年前

    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会在第一次运行这个方法或每次发出请求时配置自己吗?

    2 回复  |  直到 15 年前
        1
  •  3
  •   David M    15 年前

    每次你在我的头上实例化一个isessionfactory…

        2
  •  2
  •   Adam    15 年前

    它只做一次。如果要提高应用程序的性能,请使用ngen.exe工具。由于应用程序首次启动时需要编译的代码量大,因此nhibernate在第一次启动时通常速度较慢。

    在应用程序启动时,我有类似的性能问题,而ngen.exe解决了我的问题。