Renvoi d'une liste à partir d'une procédure stockée Dapper

c# dapper

Question

J'ai une méthode intéressante, que je veux stocker contre une classe.

        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;
        }

Donc, OpenMessages est:

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

L'erreur suivante est renvoyée:

System.InvalidOperationException n'était pas géré par le code utilisateur HResult = -2146233079 Message = ExecuteReader nécessite que la commande ait une transaction lorsque la connexion affectée à la commande est dans une transaction locale en attente. La propriété Transaction de la commande n'a pas été initialisée.

J'ai plusieurs autres méthodes qui fonctionnent bien, mais pas celle-ci dont j'ai besoin pour retourner une liste.

Réponse acceptée

Vous passez la transaction en tant que paramètres. Nomme le:

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

Aussi, si c'est vraiment une procédure stockée, vous voudrez probablement ajouter:

commandType: CommandType.StoredProcedure


Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi