none
Forma de trabajo, Transacciones, + MySQL RRS feed

  • Pregunta

  •  Hola, .. Hace un par de semanas se me planteo un inconveniente, les comento:

    Tengo la Capa de acceso a datos terminada por completo, y me surge el inconveniente de que tengo que agregarle a esta, que me soporte transacciones...

    Tengo un desarrollo de clases el cual, me base en uno anterior (que dispone la empresa en la que trabajo), que era muy pobre y viejo, el cual suponía, que se abría una conexión y que esta quedaba abierta a lo largo de toda la ejecución del programa... 

    Bueno el problema que tengo es que intente incorporar transacciones, y me parece (no se si es así, quisiera que me expliquen bien), que una conexión soporta solamente una transacción, y que finalizada la transacción, tengo que cerrar la conexión si o si, sino no me deja volver a abrir una nueva.   (Estoy usando el motor mysql !!! )

    En mi anterior Pregunta al foro, es de TransactioScope, y me parece que eso no me funciono por este mismo problema,... 

    Quisiera que alguien me explicase, la forma correcta de trabajo, y si hay problemas con esto de mantener una única conexión a la Base de datos, ya que si tuviera que modificar esto, tendría que modificar las clases de acceso a datos que utilizo, (y seria lo ultimo que quisiera hacer, porque tienen muchas horas de trabajo arriba;cuando digo muchas, casi 1 mes...)

    Gracias, y disculpen que haga este tipo de preguntas .... Saludos

    lunes, 13 de agosto de 2012 15:25

Todas las respuestas

  • tengo que cerrar la conexión si o si, sino no me deja volver a abrir una nueva.

    esta algo raro esto que planteas, se supone que als conexiones las defines dentro del using

    using(MySqlConnection conn = MySqlConnection(connstring)){

    }

    y puede haber varios bloques using dentro del bloque de la transaccion

    [N-Tier] – Desarrollo en capas - Ejemplo Facturacion - parte 3

    podrias aplciar algo como en el articulo desde la capa de negocio controlar la transaccion, peor en tu caos usando el proveedor de mysql

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    lunes, 13 de agosto de 2012 17:44
  • Leandro desde ya gracias por la ayuda...  Lo que sigue es parte de tu código, el que me mostras en el blog...:

    public static class InvoiceBO
    {
    public static void RegistrarFacturacion(InvoiceEntity invoice)
    {
    using (TransactionScope scope = new TransactionScope())
    {
    InvoiceDAL.Create(invoice);
    InvoiceDAL.UpdateTotal(invoice.InvoiceId, invoice.Total);
    scope.Complete();
    }
    }
    }

    Por diversas cuestiones tengo que agregar lineas de codigo luego de scope.Complete(), las lineas que agrego son consultas a la base de datos (que no quiero que estén dentro de la transacción) , Pero me salta el siguiente error:

    Message = "El elemento TransactionScope actual está ya completo."...

    Tenes idea que esta sucediendo???


    lunes, 13 de agosto de 2012 20:41