鱼跃千里

 

Nhibernate 2.0 学习笔记,关于hbm映射文件的重要性

        最近一直很懒了,所谓学习笔记也只是在看着NHibernate之旅系列文章导航 学习Nhibernate的过程中出现的问题

        当然,如果一直严格按照文章的做法来的话,是没有问题的,主要是我偷懒,用codesmith生成了一下hbm文件和实体映射类。生成后对照了一下,发现实体类完全不对,我没有看过NHB1.2,不知道是不是2.0的改进,现在2.0的实体类要简单多了,只需要类似这样的东东就可以了。

2.0

Code

 

1.2(用的是园子里下的那个模板,具体位置忘了)

Code

 

而且 hbm映射文件也要简洁点,并且一定要按照2.0的方式写,我就是偷懒用了代码生成器的,结果出了一个问题,搞了两天才发现。

2.0

Code

 

1.2

Code

 

开始,我不想自己写 hbm,就试着用1.2的HBM文件用了一下,HBQ等查询语句、方法,Save,Update,Delete方法都没有问题,我还以为可以一直用1.2的HBM文件呢,结果在测试SaveOrUpdate方法的时候,代码和李永京的全部一样,就是测试失败 出现了一个:a different object with the same identifier value was already associated with the session:0,of entity:Model.Entities.Customer.

网上搜了一下,据说用SaveOrUpdateCopy()方法或者session.clear()方法可以搞定,可是失败了。

好嘛,既然他说是有两个对象关联到了一个session,那我就单独测试一下SaveOrUpdate

自己的savaORupdate方法如下

Code

测试代码(主体)

Code

然后发现,Update的部分,数据库中的内容改变了,但是新添加的一个c1,没有插入到数据库中。

我汗,换个代码测试

Code

出现一个错误Batch update returned unexpected row count from update,Google了半天也没有办法。

我晕啊,我全部都是按照教程来的,怎么总是出奇怪的问题啊,突然想起我的HBM映射文件是用旧模板生成的,抱着试试看的心态,换上了2.0的hbm,竟然。。。。所有问题都没有了。

我。。。。无语了

posted on 2009-02-20 14:12  鱼跃千里  阅读(2351)  评论(0编辑  收藏  举报

导航