¿Cómo puedo implementar el patrón de unidad de trabajo en un servicio WCF con Autofac?Implementación de la unidad de trabajo en un servicio WCF con Autofac
Inyectar la misma instancia por llamada (o en Autofac terms LifetimeScope) de la interfaz de la unidad de trabajo en mis servicios y repositorios es fácil usando la integración wcf de Autofac. Lo que busco es una forma de confirmar los cambios en la unidad de trabajo la devolución de la llamada de servicio WCF obviamente SÓLO si no ha habido ninguna excepción.
He visto Using a Custom Endpoint Behavior with WCF and Autofac que es básicamente como empecé, pero eso no se ocupa de las excepciones.
Actualmente, lo que tengo es un IOperationInvoker
que inicia la unidad de trabajo en la Invocación y la confirma solo si no ha habido ninguna excepción. El problema con este enfoque es que necesito resolver mi instancia de unidad de trabajo dentro del método Invoke
que me da una instancia diferente a la que se inyectó en mis servicios y repositorios usando AutofacInstanceProvider
.
Supongamos que hemos registrado un 'IUnitOfWork' en el contenedor. ¿Cómo podemos envolver una llamada de servicio con ella y solo llamar a 'SaveChanges()' si no se ha producido ninguna excepción? ¿O tenemos que tomar la UoW en el constructor del servicio? – jgauffin
Cuando dice una llamada de servicio, ¿se refiere a la llamada de servicio WCF? Si es así, entonces el enlace que he proporcionado arriba muestra cómo puede hacerlo. El único problema es que aún tengo que encontrar una manera de guardar solo la UoW si no ha habido ninguna excepción al usar AutoFac. –
Lo dijo usted mismo =) 'lo que busco es una forma de confirmar los cambios en la unidad de trabajo a la vuelta de la llamada de servicio WCF, obviamente, SÓLO si no ha habido ninguna excepción. Esa es la parte difícil y lo que estoy buscando. – jgauffin