Имам сложен работен процес, при който искам да създам редове в няколко таблици в една транзакция. Една от операциите е създаване на нов UserAuth (от функцията за удостоверяване на ServiceStack).
Предполагам, че всички операции с база данни в aтранзакцията трябва да работи на една и съща връзка и ако това е вярно, тогава мисля, че може да е проблем да се обадите на UserAuthRepository.CreateUserAuth вътре в транзакцията, защото изглежда така, сякаш използва собствената си връзка.
Така че въпросът ми е дали ако създаването на aUserAuth ще бъде част от транзакцията или не, когато имам код, показан по-долу. И ако не, тогава как да продължите да създавате нови потребители като част от транзакция?
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();
}
}
Отговори:
3 за отговор № 1Вътрешно, когато ServiceStack изисква достъп до база данни, например в OrmLiteUserAuthRepository.CreateUserAuth тя изисква и използва нова връзка и веднага я изхвърля, след като свърши.
Понастоящем няма начин да го направите отделно от персонализирана транзакция.