NHibernate初学问题总结二

本文分享了作者在学习NHibernate过程中的几点经验教训,包括实体XML文件的大小写敏感性、实体类的数据类型要求、配置文件的最佳实践等,并提出了关于业务层和实体层整合的讨论。

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

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


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

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


1None.gif    public int UserID
2ExpandedBlockStart.gifContractedBlock.gif        dot.gif{
3ExpandedSubBlockStart.gifContractedSubBlock.gif            get dot.gifreturn m_UserId; }
4ExpandedSubBlockStart.gifContractedSubBlock.gif            set dot.gif{ m_UserId = value; }
5ExpandedBlockEnd.gif        }




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

如 hbm.xml文件中

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

不能写成

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


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

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

None.gif<?xml version="1.0" encoding="utf-8" ?>
None.gif
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.0">
None.gif    
<session-factory name="GoodFoodHelper">
None.gif        
<!-- 属性 -->
None.gif        
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
None.gif        
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
None.gif        
<property name="connection.connection_string">server=.;database=BaiheDinner;uid=sa;pwd=sa;</property>
None.gif        
<property name="show_sql">false</property>
None.gif        
<property name="dialect">NHibernate.Dialect.MsSql2000Dialect</property>
None.gif        
<property name="use_outer_join">true</property>
None.gif        
<property name="query.substitutions">true 1, false 0, yes 'Y', no 'N'</property>
None.gif        
<!-- 映射文件 -->
None.gif        
<mapping assembly="GoodFoodHelper" />
None.gif    
</session-factory>
None.gif
</hibernate-configuration>
None.gif



四 、有个问题请教:

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

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

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

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


 1None.gifpublic IList GetAllUsers(string strHQL)
 2ExpandedBlockStart.gifContractedBlock.gif        dot.gif{
 3InBlock.gif            IList lst;
 4InBlock.gif            ISession session = SessionFactory.OpenSession();
 5InBlock.gif            ITransaction transaction = session.BeginTransaction();
 6InBlock.gif 
 7InBlock.gif            lst=session.Find(strHQL);
 8InBlock.gif            transaction.Commit();
 9InBlock.gif            session.Close();
10InBlock.gif            return lst;
11ExpandedBlockEnd.gif        }

转载于:https://www.cnblogs.com/goody9807/archive/2006/09/18/507579.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值