NHibernate使用新手指南

       刚开始使用NHibernate不久,但是遇到了不少的问题,最终一一解决,使程序能够运行,就自己在Nhibernate中遇到的问题进行总结如下,以帮助新手们能快速开始自己的Nhibernate之路:

     注意事项:在QuickStart中,在写POCO(plain old  CLR object)时,所有要进行映射的属性要声明为virtual。在写映射文件时,注意xmlns属性的设置,一定要与你Nhibernate的版本一致。下面就一些遇到的具体问题,谈谈问题的原因和解决方法。

   1. 报“could not compile the xxx.hbm.xml”错,原因出在你的映射文件中,首先保证映射文件中的属性名称,字段名称,映射类型没有错误。我在写程序碰到该问题是由于字符集的问题。我程序中有Name属性,是string类型的,在映射文件中,type的设置如下 type="string",就会在保存时出上述问题,因为在.Net中,string类型是使用Unicode的,我所使用的数据库是oracle8i的,在oracle8i中,如果使用的字符集编码与.Net中的不同,就会出现该问题,解决方法是只要将sting类型的属性的映射类型设置为AnsiString就可以了。

2. validate error 该问题出现在xmlns属性的设置出错,版本不一致,更新dtd,版本号对应一致就可以解决了。

3. could not get xx class from....,不能从数据集中取得相应的类。该问题的解决方法:将XX.hbm.xml中的class属性设置完整,namespace.subnamespace.classname,将类声明详细以后,该问题就解决了。

4. could not create a proxy instance.该问题出现在当你将配置文件中的lazy属性设置为true,你在程序中得到一个session,进行某些操作后关闭过,在使用同一个SessionFactory Open一个session,使用该session进行操作时,就会报该错误,解决方法将lazy属性设置为false,或避免使用该情况。关于lazy属性的说明,参见Nhibernate手册,我也会在后续的文章中进行介绍。

5.source not found 或 unknown entity class。这两个问题都是映射文件引起的。推荐一种配置方式,避免上述问题的发生。配置文件使用hibernate.cfg.xml,只需要将sessionfactory的必须属性设置好即可,映射资源先不要绑定到配置文件中。将所有的映射文件(xxx.hbm.xml)都声明为嵌入式资源的形式。都要设置为总是拷贝。在建立sessionfactory时,使用添加程序集的方式进行添加,这样可以保证所有的映射文件自动添加,不会有遗漏。ISessionFactory factory = new Configuration.config().AddAssembly(" assembly name").BuildSessionFactory();这样就可以了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值