2009-06-25 5 views
0

est-ce que nhibernate parse xml files chaque fois que quelqu'un fait une demande ou juste une fois quand l'application démarre?nhibernate starting performance

bien voici ce que im faire:

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(); 
    } 
} 

et voici comment je reçois des données de la base de données

public IList<Category> GetCategories() 
    { 
var session = new SessionManager().GetSession(); 
     return session.CreateCriteria(typeof(Category)) 
      .List<Category>();} 

Ma question est donc va NHibernate se configurer la première fois cette méthode run ou chaque fois qu'une demande est faite?

Répondre

3

Une fois que chaque fois que vous instancier un ISessionFactory du haut de ma tête ...

+1

.. qui devrait se produire une seule fois lorsque l'application démarre. –

+0

Oui. Mais cela dépend évidemment de la façon dont vous l'avez écrit ... –

2

Il le fait qu'une seule fois. Si vous souhaitez améliorer les performances de l'application, utilisez l'outil ngen.exe. nHibernate est généralement lent pour la première fois, en raison de la quantité de code qui doit être compilée lorsque l'application démarre pour la première fois.

J'ai eu des problèmes similaires avec les performances au démarrage de l'application, et ngen.exe a résolu mes problèmes.