从Dapper存储过程返回列表

时间:2014-02-10 17:41:24

标签: c# dapper

我有一个短小精悍的方法,我想存放一个类。

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

所以,OpenMessages是:

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

正在返回以下错误:

System.InvalidOperationException未被用户代码处理   的HResult = -2146233079   Message = ExecuteReader要求命令在分配连接时具有事务   该命令处于挂起的本地事务中。命令的Transaction属性没有   已初始化。

我还有其他几种方法,它们工作正常,而不是我需要返回列表的方法。

1 个答案:

答案 0 :(得分:4)

您正在将交易作为参数传递。将其命名为:

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

此外,如果它确实是一个存储过程,您可能想要添加:

commandType: CommandType.StoredProcedure