Вопрос по – TransactionScope и откат состояния объекта

2

Я ищу решение проблемы дизайна. Это займет немного объяснения. Я бы опубликовал код, но это сделало бы это еще дольше.

У меня есть настраиваемая универсальная коллекция, которую я использую для хранения бизнес-объектов по мере необходимости. Для удобства обращайтесь в бизнес-объектыBO и общая коллекцияGC, Внутри GC у меня есть частная коллекция тех бизнес-объектов, которые были помечены для удаления. Назовите эту частную коллекциюPDC.

У меня может быть произвольное количество GC, каждый со своим собственным PDC, в любое время плюс другие BO, которых нет ни в одной коллекции.

Когда я сохраняю изменения, я зацикливаю все BO и GC, и каждый сохраняет свои изменения. Это происходит в TransactionScope, поэтому я отменяю изменения в базе данных, если что-то не удается сохранить правильно.

Когда GC сохраняет данные, у меня возникает проблема с состоянием его PDC. GC сначала сохраняет все BO с обновлениями, затем удаляет записи, связанные с BO в PDC, затемclears the PDC of all BOs, Я делаю это, чтобы состояние GC правильно отражало новое состояние базы данных.

Теперь предположим, что BO или GC не удалось сохранить после того, как один или несколько GC успешно сохранили. TransactionScope выполняет откат. Записи, удаленные из базы данных, восстанавливаются,but the some/all of the PDC's have been cleared and that state information lost.

Итак, вот мое недоразумение: как мне хранить информацию о PDC до тех пор, пока не произойдет фиксация, а затем гарантировать, что коллекции учеников будут очищены?

У TransactionScope нет события, которое я могу перехватить, чтобы сообщить мне, когда изменения были зафиксированы. Потенциально существует много BO и GC, на которые влияет любая конкретная транзакция, поэтому я не могу ограничить транзакцию обработкой одного GC за раз.

Какие-либо предложения?

Ваш Ответ

1   ответ
2

а TransactionCompleted самой транзакцией.

Вы можете захотеть, чтобы GC реализовалIEnlistmentNotification; Есть пример, который может вам помочь.

Вы также можете проверитьДНР телешоу 113 а также114.

Это выглядит идеально. Спасибо за ссылки. Это должно решить мою проблему RB Davidson

Похожие вопросы