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.
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