NHibernate遇到问题总结(Updating)
说来惭愧,看NHibernate几天了,才把第一个QuickStart调试明白,其间出现一些问题,特此总结一下。
数据库:SqlServer2000,一个表Users,Id(PK)是自生成标示列。
NHibernate的配置文件为hibernate.cfg.xml
映射配置文件为Users.hbm.xml
问题1: 出现NHibernate.MappingException : Unknown entity class: NHibernateSample3.Users
解决:此问题查了下是未映射实体类,解决方法 是将Users.hbm.xml的BuildAction设为Embedded Resource
问题2:hibernate.cfg.xml的放置位置。
解决:应该放到与Assembly同目录,即/bin/Debug下。不需要设为Embedded Resource
问题3:hibernate.cfg.xml的写法
解决:一种写法如下
<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.0">
<session-factory name="NHibernateSample3">
<!-- properties -->
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">server=.;database=Sample;uid=sa;pwd=666666;</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
<property name="use_outer_join">true</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<!-- mapping files -->
<mapping assembly="NHibernateSample3" />
</session-factory>
</hibernate-configuration>
问题4:在web.config里面添加configuration<hibernate-configuration xmlns="urn:nhibernate-configuration-2.0">
<session-factory name="NHibernateSample3">
<!-- properties -->
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">server=.;database=Sample;uid=sa;pwd=666666;</property>
<property name="show_sql">true</property>
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
<property name="use_outer_join">true</property>
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
<!-- mapping files -->
<mapping assembly="NHibernateSample3" />
</session-factory>
</hibernate-configuration>
QuickStart里用的还是类似hibernate.cfg.xml里的配置方法,但是我一直调试不过--!
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<nhibernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.drive_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.connection.connection_string" value="server=.;database=UserDemo;uid=sa;pwd=666666;" />
<add key="shwo_sql" value="true" />
</nhibernate>
<system.web>
</system.web>
</configuration>
<configuration>
<configSections>
<section name="nhibernate" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</configSections>
<nhibernate>
<add key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider" />
<add key="hibernate.dialect" value="NHibernate.Dialect.MsSql2000Dialect" />
<add key="hibernate.connection.drive_class" value="NHibernate.Driver.SqlClientDriver" />
<add key="hibernate.connection.connection_string" value="server=.;database=UserDemo;uid=sa;pwd=666666;" />
<add key="shwo_sql" value="true" />
</nhibernate>
<system.web>
</system.web>
</configuration>