ServiceStack OrmLite在事务中使用UserAuthRepository.CreateUserAuth是错误的

时间:2012-08-15 13:51:30

标签: servicestack ormlite-servicestack

我有一个复杂的工作流程,我想在一个事务中的几个表中创建行。 其中一个操作是创建一个新的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(); 
    }
  }

1 个答案:

答案 0 :(得分:3)

每当ServiceStack需要访问数据库时,例如在OrmLiteUserAuthRepository.CreateUserAuth中它要求并使用新连接,并在完成后立即处置它。

目前无法将其与自定义交易分开。