NHibernate初学问题总结二


其实,以下说的问题不是什么大事,只是自己在学习NHibernate时候遇到的问题,说出来让大家注意以下,都是一些细小的地方,但是这些地方不注意也不行。。。

一、实体的xml 文件区分大小写:


如实体类xml 文件中如果定义属性为UserID,那么在实体类的Cs文件中你也要定义属性UserID,大小写要一致,
不一致就会报错!

 1<?xml version="1.0" encoding="utf-8" ?> 
 2<hibernate-mapping xmlns="urn:nhibernate-mapping-2.0">
 3    <class name="GoodFoodHelper.dinner, GoodFoodHelper" table="users">
 4        <id name="DinnerId" type="Int32">
 5            <generator class="identity" />
 6        </id>
 7        <property name="UserID" type="Int32"/>
 8        <property name="PlaceID" type="Int16"/>
 9        <property name="Price" type="Single"/>
10        <property name="OrderTime" type="DateTime"/>
11        <property name="Status" type="Int16"/>
12        <property name="PMID" type="Int32"/>
13        <property name="DinnerDesc" type="String"/>
14        
15        
16    </class>    
17</hibernate-mapping>
18


1    public int UserID
2        {
3            get return m_UserId; }
4            set { m_UserId = value; }
5        }




二、实体类中的数据类型要用C#中数据类型

如 hbm.xml文件中

<property name="GroupID" type="Int16"/>

不能写成

<property name="GroupID" type="SmallInt"/>


三、最好把公共配置的东西写在web.config中,否则你在类文件修改配置文件时,还需在复制此文件到WEb
工程的bin目录下面。

我开始把下面东西放入一个叫hibernate.cfg.xml的文件中去,可是后来修改了配置不起作用,后来发现
Web工程下面也有一份,把类库中修改好的配置文件覆盖过去就可以了!

<?xml version="1.0" encoding="utf-8" ?>
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.0">
    
<session-factory name="GoodFoodHelper">
        
<!-- 属性 -->
        
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
        
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
        
<property name="connection.connection_string">server=.;database=BaiheDinner;uid=sa;pwd=sa;</property>
        
<property name="show_sql">false</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 assembly="GoodFoodHelper" />
    
</session-factory>
</hibernate-configuration>



四 、有个问题请教:

我看了 DDL 的 NHibernateWebDemo 一例 ,里面是用3层架构写的

业务层、实体层、和表示层 非常清晰、我想问如果我想把业务层和实体层合为一个可以吗?

然后我把实体类中写所有表示层需要的方法

例如 我把获得所有用户对象集合的方法,也写到力实体类 users中了,不知道这样写有什么缺点


 1public IList GetAllUsers(string strHQL)
 2        {
 3            IList lst;
 4            ISession session = SessionFactory.OpenSession();
 5            ITransaction transaction = session.BeginTransaction();
 6 
 7            lst=session.Find(strHQL);
 8            transaction.Commit();
 9            session.Close();
10            return lst;
11        }

原文地址:https://www.cnblogs.com/goody9807/p/507579.html