NHibernate 2学习笔记(1):准备
以前没有用过NHibernate,刚刚接触,就已经2.0 beta版了,狂找资料,最终锁定abluedog的NHibernate Step by Step,如果跟我一样没有接触过NHibernate的朋友,可以推荐看看,但是2.0和1.0已经有些差别,如果想照着上面例子做的朋友,请注意以下不同。
1、配置文件有较大的变化,现在的配置文件如下
同时,class节点
<class name="Test.Model.Person, Test.Model" table="Person">
修改为
<class name="Person" table="Person" discriminator-value="MR" >
3、最后引入需要的dll,报错的时候,缺什么引入什么
以上是我折腾了半天自己琢磨出来的,总体来说,感觉nhibernate框架挺不错,以前一直用linq
如果还有问题的朋友,请留言,我会尽快回复
1、配置文件有较大的变化,现在的配置文件如下
<configSections>
<section name="hibernate-configuration"
type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Test.DebugConnectionProvider, NHibernate.Test</property>
<property name="cache.provider_class">NHibernate.Cache.HashtableCacheProvider, NHibernate</property>
<property name="cache.use_query_cache">true</property>
<property name="connection.isolation">ReadCommitted</property>
<!-- This is the System.Data.dll provider for MSSQL Server -->
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">
Server=(local)\SQLEXPRESS;initial catalog=nhibernate;Integrated Security=SSPI
</property>
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="use_outer_join">true</property>
<property name="command_timeout">444</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
</session-factory>
</hibernate-configuration>
<!-- This section contains the log4net configuration settings -->
<log4net debug="false">
<!-- Define some output appenders -->
<appender name="trace" type="log4net.Appender.TraceAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="console" type="log4net.Appender.ConsoleAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default priority -->
<root>
<priority value="WARN" />
<appender-ref ref="console" />
</root>
</log4net>
<section name="hibernate-configuration"
type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" />
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
</configSections>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Test.DebugConnectionProvider, NHibernate.Test</property>
<property name="cache.provider_class">NHibernate.Cache.HashtableCacheProvider, NHibernate</property>
<property name="cache.use_query_cache">true</property>
<property name="connection.isolation">ReadCommitted</property>
<!-- This is the System.Data.dll provider for MSSQL Server -->
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">
Server=(local)\SQLEXPRESS;initial catalog=nhibernate;Integrated Security=SSPI
</property>
<property name="show_sql">false</property>
<property name="dialect">NHibernate.Dialect.MsSql2005Dialect</property>
<property name="use_outer_join">true</property>
<property name="command_timeout">444</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
</session-factory>
</hibernate-configuration>
<!-- This section contains the log4net configuration settings -->
<log4net debug="false">
<!-- Define some output appenders -->
<appender name="trace" type="log4net.Appender.TraceAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="console" type="log4net.Appender.ConsoleAppender, log4net">
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<appender name="rollingFile" type="log4net.Appender.RollingFileAppender,log4net" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="false" />
<param name="RollingStyle" value="Date" />
<param name="DatePattern" value="yyyy.MM.dd" />
<param name="StaticLogFileName" value="true" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default priority -->
<root>
<priority value="WARN" />
<appender-ref ref="console" />
</root>
</log4net>
上面的配置,请参照自己的项目修改
同样,也可以把上面的<hibernate-configuration>节点单独放在一个文件中,如nhibernate.config
要加上element
<mapping assembly="Test.Model" />
同时修改读取configuration信息
Configuration config = new Configuration().Configure(Server.MapPath("nhibernate.config"));
2、“.hbm.xml” 文件需要改动
如果是CodeSmith4.x版本自带的NHibernate生成的templates,那么请修改.hbm.xml的几个地方
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
修改为
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"
assembly="Test.Model"
namespace="Test.Model"
default-access="field">
assembly="Test.Model"
namespace="Test.Model"
default-access="field">
同时,class节点
<class name="Test.Model.Person, Test.Model" table="Person">
修改为
<class name="Person" table="Person" discriminator-value="MR" >
3、最后引入需要的dll,报错的时候,缺什么引入什么
以上是我折腾了半天自己琢磨出来的,总体来说,感觉nhibernate框架挺不错,以前一直用linq
如果还有问题的朋友,请留言,我会尽快回复

浙公网安备 33010602011771号