Mám komplexný pracovný postup, v ktorom chcem v jednej transakcii vytvoriť riadky v niekoľkých tabuľkách. Jednou z týchto operácií je vytvorenie nového UserAuth (z funkcie overovania ServiceStack).
Predpokladám, že všetky databázové operácie v atransakcia by mala fungovať na rovnakom spojení a ak je to pravda, myslím, že môže byť problém zavolať UserAuthRepository.CreateUserAuth v transakcii, pretože to vyzerá, akoby používal vlastné spojenie.
Takže moja otázka je, či ak vytvorenieUserAuth bude súčasťou transakcie alebo nie, keď mám kód, ako je uvedené nižšie. A ak nie, potom ako urobiť vytvorenie nových používateľov ako súčasť transakcie?
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();
}
}
odpovede:
3 pre odpoveď č. 1Vždy, keď služba ServiceStack vyžaduje prístup k databáze, napr OrmLiteUserAuthRepository.CreateUserAuth požiada o nové pripojenie a použije ho a ihneď ho zlikviduje, keď to urobí.
Momentálne neexistuje žiadny spôsob, ako by sa dala odlíšiť od vlastnej transakcie.