源码

.net-会话中的视图和TransactionScope


我们有一个使用NHibernate的asp.net Webforms应用程序.以下是一些细节:

>我们需要分布式事务,因为我们既要写入数据库又要写入队列.
>因为这是一个Web应用程序,所以我们使用了推荐的会话期间观看模式.我们有一个HTTPModule,它在BeginRequest事件上打开NHibernate会话,并在EndRequest上关闭它.
>在请求流程中,我们有几个单独的时刻需要进行事务处理.为此,我们使用TransactionScope.

因此,基本上,这是什么(伪代码):

using(var session = sessionFactory.CreateSession()){
  using(var tx1 = new TransactionScope(){
    //work work work
    tx1.Complete();
  }

  //other work

  using(var tx2 = new TransactionScope(){
    //work work work
    tx2.Complete();
  }
}

但是,我们现在陷入一种情况,其中看到许多与数据库连接有关的崩溃.一些研究给我们两个建议:

>在您的transactionscope中使用NHibernate事务
>在transactionscope中创建会话

但是,关于这些建议,我们有两个问题:

> NHibernate不会自动将自己加入TransactionScope.为什么我们需要为NHibernate显式创建一个事务?
>如果必须在TransactionScope中创建会话,我们如何将其与会话中的视图模式结合?

(0)

本文由 投稿者 创作,文章地址:https://blog.isoyu.com/archives/net-huihuazhongdeshituhetransactionscope.html
采用知识共享署名4.0 国际许可协议进行许可。除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为:11月 11, 2019 at 07:51 下午

热评文章