TransactionScope i stan wycofania obiektu

Szukam rozwiązania problemu projektowego. To zajmie trochę wyjaśnienia. Chciałbym napisać kod, ale to jeszcze dłużej.

Mam niestandardową kolekcję rodzajową, której używam do przechowywania obiektów biznesowych w razie potrzeby. Dla ułatwienia wywołania obiektów biznesowychBO i kolekcja ogólnaGC. Wewnątrz GC mam prywatną kolekcję tych obiektów biznesowych, które zostały oflagowane do usunięcia. Zadzwoń do tej prywatnej kolekcjiPDC.

Mogę mieć dowolną liczbę GC, każda z własnym PDC, w dowolnym czasie, plus inne BO, których nie ma w żadnej kolekcji.

Kiedy zapisuję zmiany, zapętlam wszystkie BO i GC i każę każdemu z nich zapisać zmiany. Dzieje się tak w opakowaniu TransactionScope, więc wycofuję zmiany bazy danych, jeśli cokolwiek nie uda się poprawnie zapisać.

Kiedy GC zapisuje, mam problem ze stanem PDC. GC najpierw zapisuje wszystkie BO z aktualizacjami, a następnie usuwa rekordy związane z BO w PDCczyści PDC wszystkich BO. Robię to, aby stan GC prawidłowo odzwierciedlał nowy stan bazy danych.

Przypuśćmy teraz, że BO lub GC nie uda się zapisać po pomyślnym zapisaniu jednego lub więcej GC. TransactionScope wykonuje wycofanie zmian. Rekordy usunięte z bazy danych są przywracane,ale niektóre / wszystkie PDC zostały wyczyszczone i informacje o stanie zostały utracone.

Oto moja dylemat: Jak zachować informacje PDC do czasu, aż do momentu zatwierdzenia, a następnie zagwarantować, że odpowiednie kolekcje zostaną usunięte?

TransactionScope nie ma żadnego zdarzenia, które mogę złapać, aby poinformować mnie, kiedy zmiany zostały zatwierdzone. Każda potencjalna transakcja ma potencjalnie WIELE BO i GC, więc nie mogę ograniczyć transakcji do obsługi jednego GC na raz.

Jakieś sugestie?

questionAnswers(1)

yourAnswerToTheQuestion