Проводится ли транзакция SaveChange в случае потери соединения с БД? - PullRequest
0 голосов
/ 07 июня 2019

Мы реализовали WordAddin и используем EF6 для подключения к базе данных Oracle. С помощью надстройки пользователь может загрузить документ из базы данных. После редактирования документа пользователь закрывает документ. Мы используем DocumentBeforeClose-Event для обновления документа в базе данных. Только один пользователь может редактировать и сохранять документ в базе данных. Проблема в том, что иногда в оракуле существует ряд блокировок. Насколько мне известно, блокировка строки означает, что одна транзакция обновляет строку, а другая ожидает. Возможно ли, что если соединение db во время SaveChanges потеряно, транзакция не будет зафиксирована? Или если слово неожиданно закрывается во время SaveChange?

После закрытия документа в слове слово закрывается по коду, может ли это быть проблемой?

1 Ответ

1 голос
/ 07 июня 2019

Маловероятно, что транзакция фиксируется, когда соединение теряется при сохранении.

EF запускает транзакцию при выполнении SaveChanges и фиксирует ее в самом конце всего взаимодействия с базой данных.Только если сразу после сохранения данных инициируется другое взаимодействие с базой данных, потерянное соединение будет замечено при успешном сохранении.

Вам потребуется политика повторных попыток , чтобы убедиться, что драгоценные изменения не будутбыть потерянным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...