我有一个复杂的工作流程,我想在一个事务中的几个表中创建行。 其中一个操作是创建一个新的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();
}
}
答案 0 :(得分:3)
每当ServiceStack需要访问数据库时,例如在OrmLiteUserAuthRepository.CreateUserAuth中它要求并使用新连接,并在完成后立即处置它。
目前无法将其与自定义交易分开。