用于客户端 - 服务器软件的nhibernate ISessionFactory

时间:2015-09-23 22:17:41

标签: c# postgresql nhibernate

我是nhibernate的新手,我正在构建一个客户端 - 服务器应用程序。我听说创建一个nhinernate ISessionFactory如果我只创建一次就更好了。但它也会对数据库产生影响吗?或只是运行软件的工作站?我问它,因为如果它是3层应用程序,那么我将只有一个nhinernate但是,因为我的应用程序是客户端 - 服务器,软件将在每个工作站上运行。因此,每个工作站将创建一个nhinernate ISessionFactory

1 个答案:

答案 0 :(得分:0)

没有。它不会影响数据库。实际上,保留ISessionFactory的单个实例有很多理由。其中一个主要原因是帮助nhibernate知道它应该如何访问数据库的所有信息,我的意思是,它应该如何在整个mappings配置中生成查询。

来自NHibernate Docs

  

SessionFactory的内部状态是不可变的。一旦它   创建此内部状态已设置。这个内部状态包括所有   关于对象/关系映射的元数据。

ISessionFactory不会在数据库上保留,它会提供Session OpenSession()方法的实例,而Session将为您提供支持。

根据您使用NHibernate进行映射的模型,启动ISessionFactory可能需要一点时间。 ISessionFactory有一些pratices to improve the performance of the initialization。如果实现它,请记住在更改映射时删除序列化文件。