其实,以下说的问题不是什么大事,只是自己在学习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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

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

2

3

4

5

二、实体类中的数据类型要用C#中数据类型
如 hbm.xml文件中
<property name="GroupID" type="Int16"/>
不能写成
<property name="GroupID" type="SmallInt"/>
三、最好把公共配置的东西写在web.config中,否则你在类文件修改配置文件时,还需在复制此文件到WEb
工程的bin目录下面。
我开始把下面东西放入一个叫hibernate.cfg.xml的文件中去,可是后来修改了配置不起作用,后来发现
Web工程下面也有一份,把类库中修改好的配置文件覆盖过去就可以了!
















四 、有个问题请教:
我看了 DDL 的 NHibernateWebDemo 一例 ,里面是用3层架构写的
业务层、实体层、和表示层 非常清晰、我想问如果我想把业务层和实体层合为一个可以吗?
然后我把实体类中写所有表示层需要的方法
例如 我把获得所有用户对象集合的方法,也写到力实体类 users中了,不知道这样写有什么缺点
1
public 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
}

2

3

4

5

6

7

8

9

10

11
