TransactionScope y balanceo de estado de objeto.

Estoy buscando una solución a un problema de diseño. Esto llevará un poco de explicación. Yo pondría el código, pero eso lo haría aún más largo.

Tengo una colección genérica personalizada que utilizo para guardar Business Objects según sea necesario. Para facilitar la consulta, llame a los objetos de negocio.BO y la colección genéricaGC. Dentro de GC tengo una colección privada de aquellos objetos comerciales que se han marcado para su eliminación. Llama a esta colección privada.PDC.

Puedo tener un número arbitrario de GC, cada uno con su propio PDC, en cualquier momento, además de otros BO que no están en ninguna colección.

Cuando guardo los cambios, recorro todo BO y GC y hago que cada uno guarde sus cambios. Esto sucede envuelto en un TransactionScope, por lo que deshago los cambios en la base de datos si algo no se guarda correctamente.

Cuando un GC salva, tengo un problema con el estado de su PDC. El GC primero guarda todas las BO con actualizaciones, luego borra los registros asociados con las BO en el PDC, luegodespeja el PDC de todos los BOs. Hago esto para que el estado del GC refleje correctamente el nuevo estado de la base de datos.

Ahora suponga que un BO o GC no se puede guardar después de que uno o más de los GC se hayan guardado correctamente. El TransactionScope realiza una reversión. Los registros eliminados de la base de datos se restauran,pero algunos / todos los PDC se han borrado y esa información de estado se perdió.

Así que aquí está mi pregunta: ¿Cómo mantengo la información del PDC hasta después de que haya ocurrido el compromiso, y luego garantizo que las colecciones adecuadas se eliminen?

TransactionScope no tiene un evento que pueda detectar para avisarme cuando se hayan realizado los cambios. Existen potencialmente MUCHAS BO y GC afectadas por una transacción determinada, por lo que no puedo restringir la transacción para manejar un GC a la vez.

¿Alguna sugerencia?

Respuestas a la pregunta(1)

Su respuesta a la pregunta