Eu tenho um fluxo de trabalho complexo onde eu quero criar linhas em várias tabelas em uma transação. Uma das operações é criar um novo UserAuth (do recurso ServiceStack Authentication).
Eu suponho que todas as operações do banco de dados em umtransação deve operar na mesma conexão, e se isso for verdade, então eu acho que pode ser um problema para chamar UserAuthRepository.CreateUserAuth dentro de uma transação porque parece que ele usa sua própria conexão.
Então, minha pergunta é se a criação de umUserAuth fará parte da transação ou não quando eu tiver código como mostrado abaixo. E se não, como criar novos usuários como parte de uma transação?
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();
}
}
Respostas:
3 para resposta № 1Internamente, sempre que o ServiceStack requer o acesso a um banco de dados, por OrmLiteUserAuthRepository.CreateUserAuth ele pede e usa uma nova conexão e imediatamente descarta uma vez que é feito.
Atualmente, não há como separar uma transação personalizada.