Size: a a a

2020 January 24

G

Gopneg in pro.net
Чувак, ты зачем все усложняешь? Ты поссать тоже в другой город ходишь?
источник

B

Bretbas in pro.net
Gopneg
Чувак, ты зачем все усложняешь? Ты поссать тоже в другой город ходишь?
в плане?
Почему усложняю?

Просто возникла потребность в разделенной транзакции.
В контроллере будет обернуто все в одну большую транзакцию, а у менеджера будут дергаться методы.

Нужно восстановится, елси что пойдет не так
источник

AB

Alex B in pro.net
Bretbas
Допустим у меня есть контроллер, он принимает в конструкторе контекст.
Контроллер вызывает метод какого-нибудь менеджера, в котором тоже есть свой экземпляр контекста, полученный также через DI.
Тоесть настройки то DbContextOptions между этими контекстами то одинаковые, но вот экземпляры нет
зачем у них разные контексты?
источник

AB

Alex B in pro.net
ну там per request lifetime
источник

B

Bretbas in pro.net
Alex B
зачем у них разные контексты?
а как быть?
источник

B

Bretbas in pro.net
принимать в методах менеджера сразу контекст?
источник

DP

Denis Petukhov in pro.net
Там есть способ
источник

B

Bretbas in pro.net
тот который из контроллера?
источник

DP

Denis Petukhov in pro.net
Когда транзакцию создаешь можно передать TransactionScope
источник

B

Bretbas in pro.net
источник

DP

Denis Petukhov in pro.net
Если не ошибаюсь
источник

B

Bretbas in pro.net
Denis Petukhov
Когда транзакцию создаешь можно передать TransactionScope
я вот как хотел сделать
источник

DP

Denis Petukhov in pro.net
Bretbas
я вот как хотел сделать
Ну или так
источник

B

Bretbas in pro.net
Denis Petukhov
Ну или так
НО
источник

B

Bretbas in pro.net
мне кажется тут неверно
источник

AB

Alex B in pro.net
Bretbas
принимать в методах менеджера сразу контекст?
Нет. Использовать DI. Контекст зарегистрировать как per request(ну или как там в выбранном контейнере оно называется).
В итоге если приходит запрос и dbcontext передается в контроллер через конструктор и в менелжер вызываемый контроллером тоже через конструктор, то у них будет один контекст.
И через параметры методов ничего не нужно передавать.
источник

B

Bretbas in pro.net
Народ.
Я читаю доки сейчас по Транзакциям в EF Core.
Мне нужна Межконтекстная транзакция между несколькими экземплярами контекста.

Я не совсем понял, мне нужно расшариный ЭКЗЕМПЛЯР DbContextOptions<T> where T : DbContext между экземплярами контекста, чтобы сделать такой вид транзакции между ними, или нужно чтобы просто этот DbContextOptions был одинаков в плане параметров?
источник

B

Bretbas in pro.net
Допустим у меня есть контроллер, он принимает в конструкторе контекст.
Контроллер вызывает метод какого-нибудь менеджера, в котором тоже есть свой экземпляр контекста, полученный также через DI.
Тоесть настройки то DbContextOptions между этими контекстами то одинаковые, но вот экземпляры нет
источник

AB

Alex B in pro.net
Есть ambient транзакции в дотнете же.
источник

B

Bretbas in pro.net
Alex B
Нет. Использовать DI. Контекст зарегистрировать как per request(ну или как там в выбранном контейнере оно называется).
В итоге если приходит запрос и dbcontext передается в контроллер через конструктор и в менелжер вызываемый контроллером тоже через конструктор, то у них будет один контекст.
И через параметры методов ничего не нужно передавать.
Е мое!
источник