Pregunta

TransactionScope es una característica sorprendente, pero muy pocos proveedores ponen en práctica correctamente. No quiero pasar la conexión como parámetro.

¿Fue útil?

Solución

No está seguro de lo que quería lograr utilizando TransactionScope aquí - si idea es tener flujo auotmatic de transacciones a través de métodos (y alistamiento simple dentro de la transacción en curso) y luego pasar conexión como parámetro no es la única manera. Puede pasar conexión y transacción actual utilizando corriente CallContext (o hilo actual). Ponga un simple envoltorio estática que comprobar si existe conexión / transacción en contexto de la llamada actual y crea si no. Esta es la forma no intrusiva transparente en contraposición a pasar por el parámetro.

Ahora, si usted está buscando en las transacciones que fluye a través de los límites de dominio aplicación y / o el uso de varios administradores de recursos (es decir, el uso de transacciones distribuidas), entonces la mejor opción sería utilizar TransactionScope y puesta en marcha su propio ResourceManager . Por supuesto, esto no es una cosa trivial, pero entonces eso es lo que conlleva los requisitos. Si el sistema subyacente no proporciona recursos transaccional entonces administrador de recursos personalizado puede utilizar la compensación de transacciones para tener la espalda rollo (por ejemplo, un gerente en una parte superior del sistema de archivos puede utilizar "Eliminar carpeta" como una compensación de transacciones contra la transacción original de "Crear carpeta") .

Otros consejos

Tal vez usted está buscando Sistema Prevalencia .

Básicamente, cada transacción es por diario (se guardan los detalles de la transacción ) y si la aplicación se bloquea y se reinicia o bien se puede continuar donde lo dejó o deshacer los cambios basados ??en el estado de diario.

Aquí hay un enlace a la href="http://martinfowler.com/ap2/snapshot.html" rel="nofollow"> instantánea

scroll top