2

我有一个复杂的工作流程,我想在一个事务中在多个表中创建行。其中一项操作是创建一个新的 UserAuth(来自 ServiceStack 身份验证功能)。

我假设事务中的所有数据库操作都应该在同一个连接上运行,如果这是真的,那么我认为在事务中调用 UserAuthRepository.CreateUserAuth 可能是个问题,因为它看起来好像使用自己的连接。

所以我的问题是,当我有如下所示的代码时,创建 UserAuth 是否会成为交易的一部分。如果没有,那么如何在交易中创建新用户?

  using (var db = Db.OpenDbConnection()) {
    using (var trans = db.OpenTransaction()) {

      ... do some databae operations via. db ...

      var userAuth = UserAuthRepository.CreateUserAuth(
        new UserAuth{UserName = "blabla"}, 
        "password"
      );

      ... do some more databae operations via. db ...

      trans.Commit(); 
    }
  }
4

1 回答 1

3

在内部,只要 ServiceStack 需要访问数据库,例如在OrmLiteUserAuthRepository.CreateUserAuth中,它就会请求并使用新连接,并在完成后立即处理它。

目前无法将其与自定义事务分开。

于 2012-08-15T16:29:17.100 回答