Devolver una lista de un procedimiento almacenado Dapper

c# dapper

Pregunta

Tengo un método apuesto, que quiero almacenar en una clase.

        using (var block = new TransactionBlock())
        {
            const string sql =
                "select * from Messages where statusId not in ('5','6')";
            var results = TransactionBlock.Connection.Query<OpenMessages>
            (sql,TransactionBlock.Transaction).ToList();
            block.Commit();
            return results;
        }

Entonces, OpenMessages es:

   public class OpenMessages
   {
      public List<string> MessageId { get; set; }
   }

Se está devolviendo el siguiente error:

System.InvalidOperationException no fue manejado por el código de usuario HResult = -2146233079 Message = ExecuteReader requiere que el comando tenga una transacción cuando la conexión asignada al comando se encuentra en una transacción local pendiente. La propiedad de Transacción del comando no se ha inicializado.

Tengo varios otros métodos que funcionan bien, pero no es necesario que devuelva una lista.

Respuesta aceptada

Está pasando la transacción como los parámetros. Nombralo:

var results = TransactionBlock.Connection.Query<OpenMessages>
        (sql,
   transaction: TransactionBlock.Transaction).ToList();

Además, si realmente es un procedimiento almacenado, es probable que desee agregar:

commandType: CommandType.StoredProcedure


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow