大家好,最近在做wcf服务,用nhibernate作为数据持久化工具,要用到分布式事务。
在配置了事务之后,服务不可以正常运行,总提示:The transaction has aborted. 看innerException里面的内容:Communication with the underlying transaction manager has failed.
如果把事务事务配置去掉,服务可以正常运行。
请各位大侠予以指点,谢谢!
我看了你给的后面的那个网站,不太明白他给的两个notes里面的内容:Don’t close the NHibernate ISession explicitly,Don’t create transactions explicitly。是不是可以理解为在一个session实例里面做完了相关的数据处理,不用做session.Close()和session.Clear().也不用在Session实例里面用事务?我现在的程序是那么做的,但是异常依旧存在。我数据库用的 Oracle. 你有相关的忠告吗?
谢谢!
@IT 6796: 昨天我实现了一个案例,在服务端方法开始/结束时打开/提交事务,出错时回滚,类似于MVC程序Action执行开始/结束时的事务,有时间我可以写到博客中。当然,这个案例仅在服务端,不像 Castle或Spring实现了客户端+服务端事务。
@J九日: 哦,我要实现的是事务传播。
我博客里有例子。
你那里的例子有用spring.net,我连配置文件都看不懂。
楼主能不能描述的清晰些,具体使用场景?
用nhibernate的话,开c#事务会冲突,所以直接用nhibernate提供的事务进行事务控制。
nhibernate+wcf的话不能延时加载