不知道你跟着《微积微发之NHibernate系列之NHibernate的配置》做了没,没跟着做,这篇你也没必要继续看下去了,否则只能是浪费你的生命,如果跟着做了,那就打开你的项目,看看里面的一些配置是啥子意思吧!
<session-factory>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.connection_string">
Server=.;Initial Catalog=MyTest;Integrated Security=SSPI;
</property>
<mapping assembly="NHibernateTest"/>
</session-factory>
我们在<configSections>在配置文件里定义了一个配置节(<section name="hibernate-configuration" type="NHibernate.Cfg.ConfigurationSectionHandler,NHibernate"/>)并且声明了这个配置节里面的数据如何解析。<hibernate-configuration> 配置包含了NHibernate的配置信息,告诉NHibernate我们使用 Microsoft SQL Server 2008数据库并且通过指定的连接字符串连接数据库. 方言(dialect)是必选设置,每个数据库对SQL标准的解释都不一样。 NHibernate通过方言(dialect)来消除各种数据库之间对SQL标准的解释的差异。
<hibernate-configuration>配置节的最后一个元素mapping 声明了 NHibernateTest作为包含持久化类以及对应映射文件所在的应用程序集名称。
为了让上面提到运行时Users.cs类增强功能生效,NHibernate持久化类的所有的public的属性必须声明为virtual。
接下来我们打开NHibernateHelper.cs
我们现在可以开始使用NHibernate的ISession了。它是一个持久化管理器, 我们通过ISession来从数据库中存取Users。首先,我们要从ISessionFactory中获取一个ISession(NHibernate的工作单元)。
ISessionFactory代表一个数据库,并且使用一个XML配置文件(Web.config或者hibernate.cfg.xml)。 NHibernate通过对Configuration().Configure()的调用来装载配置文件,并初始化成一个Configuration实例。通过Configuration实例创建一个ISessionFactory。 在创建 ISessionFactory之前(它是不可变的),你可以访问Configuration来设置其他属性(甚至修改映射的元数据)。我们应该在哪儿创建ISessionFactory,在我们的程序中又如何访问它呢?
ISessionFactory通常只是被初始化一次,比如说在Application_Start事件里来初始化。 这意味着你不应该在ASP.NET页面中把它作为一个实例变量来持有,而应该放在其他地方。进一步的说, 我们需要使用单例(Singleton)模式,我们才能更容易的在程序中访问 ISessionFactory。 下面的方法就同时解决了两个问题:对ISessionFactory的初始配置与便捷使用。
private static readonly ISessionFactory sessionFactory; static NHibernateHelper() { sessionFactory = new Configuration().Configure().BuildSessionFactory(); }