处理Nhibernate中遇到的NullReferrence Exception问题

最近在使用NHibernate的时候,遇到一个很奇怪的问题。在调用Session.SaveOrUpdate()方法的时候,抛出了异常。

 

看下面的截图,虽然是这个异常是VS在catch这行代码捕捉到的,但是真正出问题的,是在try的代码块的内部。关于如何让VS在问题发生出捕捉并且提示,在我的其他的博客文章中有一篇详细介绍了,这里不再多说。

 

抛出异常的代码如下:

 

 

 

 

归根到底,是调用Session.SaveOrUpdate()的时候抛出的异常。而且我去找Excepition的详细内容,看看有没有什么提示,但是根本没有什么InnerExcetion与Message等有价值的线索。后来 我就一直思考为什么会出现问题,最终找到了问题的根结所在,是current_session_context_class出了问题。

 

情景是这样的。我的项目是一个web项目,在项目中用到了NHibernate,然后我把配置写在了web.config中。之后我又写了一些新的方法,然后建立了一个UnitTest项目,之后需要把Nhibernate相关的内容都移过去,目的是为了测试这些service方法。我就把web.config中的内容拷贝到了UnitTest项目的app.config中,而NHibernate中的session上下文依然是web,这就是导致了问题的原因。

 

 

之后我把它改成thread_static,问题就解决了。原因就是UnitTest的项目没有IIS的那套东西,如果此时还是从web中获取session,那么就会是个null,所以抛出了异常。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值