我使用NHibernate在.NET中遇到的问题一记!

.Net ORM映射框架 NHibernate,本来是Java的东西,一群牛B轰轰的码农,移植到了.NET平台、是个非常不错的 ORM 映射框架、


故事开始啦 ~_~ !


下班的钟声已经敲响了,远远望去。打卡机处排着长队,打卡机,“嘟””嘟”“嘟”。。。


熊大:光头强,包裹数据推送过去了吧?为毛WMS不能配货,没有包裹订单明细?

光头强:怎么可能,你操作出错了?昨天我自己试的时候都没问题的。。。。。

熊大:错你妹儿啊,俺测试了N次,来,我掩饰给你看、(熊大坐下了下来)!


只见熊大趴在电脑前,四角朝地儿、操作了一遍、

“我擦,我才发现,包裹明细数据都没有了、就推送到WMS,这儿数据就没了 ?”熊大说


光头强一看。傻眼了。一连串的问号。。。。。?????


代码没有删除数据操作啊,怎么可能呢?于是乎,经过一会儿时间分析、

打开项目、F5 Debug 模式走起、走啊走!走啊走、半小时过去了。光头

强一点儿眉目也没有!!!


光头强开始怀疑 NHibemate的稳定性,代码逻辑的精密性了、要是按光头强以前的性格,直

接上SQL语句得了、还用TMD什么 ORM 框架,但这个项目。全部依赖 NHibernate,无可奈何、

光头强沉默了、


坐在旁边的熊二在研究怎么打鸟。见光头强沉默,靠了过来、窃窃的笑!嘿嘿哈哈哈~~----~~

两家伙再一次Debug走起、参数,数据的正确性,全部是TMD正确的、执行完更新包裹明细的方法

熊二查看了数据库的数据,“ 嗯,包裹明细数据还在、继续走”光头强道、

F5,F10,F11。F5,F10,F11。F5,F10,F11。。F5,F10,F11。。F5,F10,F11。。、终于走完了、

熊二再查看数据库的数据,傻眼了、数据不对了。某个字段值不对了。在执行NHibernate Update时

数据都还是对的、。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。


八戒在旁边吃西瓜,熊二问了句:“1.4.0.0版本的FluentNHibernate与数据库的交互模式是怎么样的”


“Insert,Delete是即时的,Update是只有Commit才会更新数据库的”,八戒说道。


光头强继续查看代码,终于发现了端倪、给NHibernate Update的数据源对象。属于引用类型。在NHibernate Commit之前、数据源在其他地方,被修改了!!!!!!!!!!!!!!!


傻眼了~—~。呵呵、下面是一些小小的体会与问题总结!!!!


1、对于 NHibernate数据库交互模式,Insert,Delete是即时的,Update是只有Commit才会更新数据库的(这个可能我个人的理解有问题,具体还需要看程序设置NHibernate的提交级别!)

2、对于给NHibernate做 Insert,Update,Delete的数据源,最大是不受任何“污染(数据源的值可能在某些地方被程序修改)”的数据源

3、遇到问题,请多多分析下,不要盲目的Debug!要学会分析问题,才能解决问题!

4、不熟悉的东西,不要随便用到您的项目中,除非你必须要它,那就一定要熟悉,甚至精通它!





本文出自 “傻帽” 博客,请务必保留此出处http://hotboy.blog.51cto.com/8826994/1625827

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。