He estado tratando de diferentes maneras para hacer funcionar un conjunto simple de transacciones para una situación simple de cliente/servidor de WCF. Mi servidor WCF tiene una declaración de nivel de clase de la clase Entity Framework para mi acceso a la base de datos y varios métodos para modificar los datos y un método para SaveChanges. Estoy usando Oracle Data Access (ODP.NET).¿Cómo puedo obtener Entity Framework y WCF para trabajar con las transacciones? De acuerdo ... ¿cuál es el secreto?
Por ejemplo, quiero llamar a una modificación desde el cliente y luego a una llamada por separado para guardar los cambios en el servicio WCF. No funciona Básicamente, todo se ejecuta correctamente, pero cuando se realiza la segunda llamada para guardar los cambios, el servicio WCF ya no tiene el contexto original y, por lo tanto, no se guardan los cambios (y, en consecuencia, la llamada anterior que realizó los cambios se retrotrae automáticamente) .
Estoy utilizando el alcance de transacción en torno a ambas operaciones en mi cliente y ejecutando Complete() una vez hecho. Mis servicios WCF tienen OperationContract que usan [TransactionFlow(TransactionFlowOption.Mandatory)]
y esas implementaciones de método usan [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)]
. Finalmente, mi configuración web está configurada con un wsHttpBinding que tiene la propiedad transactionFlow
establecida en True.
No estoy teniendo suerte. No importa lo que intente, cuando intento presionar el servicio para guardar el seguimiento, el contexto EF ya se ha renovado.
No todas las vinculaciones admiten transacciones. http://www.wrox.com/WileyCDA/Section/Transactions-in-WCF-and-NET.id-305253.html – faester
¿Cómo maneja la sesión entre llamadas? WCF es apátrida por defecto, así que a menos que esté ordenando a WCF que haga algo con el estado, es posible que esté perdiendo algo. –
Son entidades generadas por edmx o generado poco – Praneeth