NHibernate 2学习笔记(1):准备

以前没有用过NHibernate,刚刚接触,就已经2.0 beta版了,狂找资料,最终锁定abluedogNHibernate Step by Step,如果跟我一样没有接触过NHibernate的朋友,可以推荐看看,但是2.0和1.0已经有些差别,如果想照着上面例子做的朋友,请注意以下不同。

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>


上面的配置,请参照自己的项目修改

同样,也可以把上面的<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">

同时,class节点
<class name="Test.Model.Person, Test.Model" table="Person">
修改为
<class name="Person" table="Person" discriminator-value="MR" >

3、最后引入需要的dll,报错的时候,缺什么引入什么

以上是我折腾了半天自己琢磨出来的,总体来说,感觉nhibernate框架挺不错,以前一直用linq
如果还有问题的朋友,请留言,我会尽快回复
posted @ 2008-07-04 15:12  rapid  阅读(2227)  评论(2)    收藏  举报