nhibernate开始表现

时间:2009-06-25 10:49:23

标签: performance nhibernate

每次有人发出请求时都会发出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 个答案:

答案 0 :(得分:3)

每当你将ISessionFactory实例化到我的头顶时......

答案 1 :(得分:2)

它只做一次。如果要提高应用程序的性能,请使用ngen.exe工具。 nHibernate通常是第一次变慢,因为当应用程序第一次启动时需要编译的代码量很大。

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